@nahisaho/katashiro-orchestrator 1.0.1 → 1.3.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/dist/consensus/AsciiDiagramConverter.d.ts +45 -0
- package/dist/consensus/AsciiDiagramConverter.d.ts.map +1 -0
- package/dist/consensus/AsciiDiagramConverter.js +460 -0
- package/dist/consensus/AsciiDiagramConverter.js.map +1 -0
- package/dist/consensus/ConsensusResearchEngine.d.ts +84 -0
- package/dist/consensus/ConsensusResearchEngine.d.ts.map +1 -0
- package/dist/consensus/ConsensusResearchEngine.js +409 -0
- package/dist/consensus/ConsensusResearchEngine.js.map +1 -0
- package/dist/consensus/ConsensusSelector.d.ts +63 -0
- package/dist/consensus/ConsensusSelector.d.ts.map +1 -0
- package/dist/consensus/ConsensusSelector.js +124 -0
- package/dist/consensus/ConsensusSelector.js.map +1 -0
- package/dist/consensus/ReportPostProcessor.d.ts +51 -0
- package/dist/consensus/ReportPostProcessor.d.ts.map +1 -0
- package/dist/consensus/ReportPostProcessor.js +162 -0
- package/dist/consensus/ReportPostProcessor.js.map +1 -0
- package/dist/consensus/ReportScorer.d.ts +81 -0
- package/dist/consensus/ReportScorer.d.ts.map +1 -0
- package/dist/consensus/ReportScorer.js +292 -0
- package/dist/consensus/ReportScorer.js.map +1 -0
- package/dist/consensus/ResearchAgent.d.ts +137 -0
- package/dist/consensus/ResearchAgent.d.ts.map +1 -0
- package/dist/consensus/ResearchAgent.js +319 -0
- package/dist/consensus/ResearchAgent.js.map +1 -0
- package/dist/consensus/index.d.ts +22 -0
- package/dist/consensus/index.d.ts.map +1 -0
- package/dist/consensus/index.js +42 -0
- package/dist/consensus/index.js.map +1 -0
- package/dist/consensus/types.d.ts +409 -0
- package/dist/consensus/types.d.ts.map +1 -0
- package/dist/consensus/types.js +98 -0
- package/dist/consensus/types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KATASHIRO v1.3.0 - AsciiDiagramConverter
|
|
3
|
+
* ASCII図を検出してMermaid/Markdownに変換
|
|
4
|
+
* @module @nahisaho/katashiro-orchestrator/consensus
|
|
5
|
+
* @version 1.3.0
|
|
6
|
+
*/
|
|
7
|
+
import type { AsciiDiagram } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* ASCII図検出・変換クラス
|
|
10
|
+
* @requirement REQ-1.3.0-VIS-001
|
|
11
|
+
*/
|
|
12
|
+
export declare class AsciiDiagramConverter {
|
|
13
|
+
private static readonly TABLE_PATTERNS;
|
|
14
|
+
private static readonly TREE_PATTERNS;
|
|
15
|
+
private static readonly FLOWCHART_PATTERNS;
|
|
16
|
+
/**
|
|
17
|
+
* テキストからASCII図を検出
|
|
18
|
+
* @param text 入力テキスト
|
|
19
|
+
* @returns 検出されたASCII図配列
|
|
20
|
+
*/
|
|
21
|
+
detect(text: string): AsciiDiagram[];
|
|
22
|
+
/**
|
|
23
|
+
* ASCII図をMermaidに変換
|
|
24
|
+
* @param diagram ASCII図
|
|
25
|
+
* @returns Mermaid形式の文字列
|
|
26
|
+
*/
|
|
27
|
+
convertToMermaid(diagram: AsciiDiagram): string;
|
|
28
|
+
/**
|
|
29
|
+
* ASCII図をMarkdownに変換
|
|
30
|
+
* @param diagram ASCII図
|
|
31
|
+
* @returns Markdown形式の文字列
|
|
32
|
+
*/
|
|
33
|
+
convertToMarkdown(diagram: AsciiDiagram): string;
|
|
34
|
+
private detectTable;
|
|
35
|
+
private detectTree;
|
|
36
|
+
private detectBox;
|
|
37
|
+
private detectFlowchart;
|
|
38
|
+
private convertTableToMarkdown;
|
|
39
|
+
private convertTreeToMarkdownList;
|
|
40
|
+
private convertTreeToMermaid;
|
|
41
|
+
private convertFlowchartToMermaid;
|
|
42
|
+
private convertBoxToMermaid;
|
|
43
|
+
private sanitizeNodeId;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=AsciiDiagramConverter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsciiDiagramConverter.d.ts","sourceRoot":"","sources":["../../src/consensus/AsciiDiagramConverter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;GAGG;AACH,qBAAa,qBAAqB;IAEhC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAOpC;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAKnC;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAOxC;IAEF;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE;IA4CpC;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;IAgB/C;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;IAmBhD,OAAO,CAAC,WAAW;IAkDnB,OAAO,CAAC,UAAU;IA6ClB,OAAO,CAAC,SAAS;IA0CjB,OAAO,CAAC,eAAe;IAmDvB,OAAO,CAAC,sBAAsB;IA+C9B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,oBAAoB;IA6C5B,OAAO,CAAC,yBAAyB;IAiDjC,OAAO,CAAC,mBAAmB;IA+B3B,OAAO,CAAC,cAAc;CAQvB"}
|
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* KATASHIRO v1.3.0 - AsciiDiagramConverter
|
|
4
|
+
* ASCII図を検出してMermaid/Markdownに変換
|
|
5
|
+
* @module @nahisaho/katashiro-orchestrator/consensus
|
|
6
|
+
* @version 1.3.0
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AsciiDiagramConverter = void 0;
|
|
10
|
+
/**
|
|
11
|
+
* ASCII図検出・変換クラス
|
|
12
|
+
* @requirement REQ-1.3.0-VIS-001
|
|
13
|
+
*/
|
|
14
|
+
class AsciiDiagramConverter {
|
|
15
|
+
// ASCII テーブル検出パターン
|
|
16
|
+
static TABLE_PATTERNS = {
|
|
17
|
+
// +---+---+ スタイル
|
|
18
|
+
plusStyle: /^\s*\+[-+]+\+\s*$/,
|
|
19
|
+
// |---|---| スタイル
|
|
20
|
+
pipeStyle: /^\s*\|[-|]+\|\s*$/,
|
|
21
|
+
// セル行
|
|
22
|
+
cellRow: /^\s*\|[^|]+\|/,
|
|
23
|
+
};
|
|
24
|
+
// ASCII ツリー検出パターン
|
|
25
|
+
static TREE_PATTERNS = {
|
|
26
|
+
// ├── または └── スタイル
|
|
27
|
+
treeNode: /^[\s]*[├└│┌┐┘┬┴┼─┤].*$/,
|
|
28
|
+
// インデント + - スタイル
|
|
29
|
+
dashNode: /^(\s*)[-*]\s+.+$/,
|
|
30
|
+
};
|
|
31
|
+
// ASCII フローチャート検出パターン
|
|
32
|
+
static FLOWCHART_PATTERNS = {
|
|
33
|
+
// [Node] --> [Node] スタイル
|
|
34
|
+
bracketArrow: /\[([^\]]+)\]\s*(?:-->|->|==>|=>|--)\s*\[([^\]]+)\]/,
|
|
35
|
+
// (Node) --> (Node) スタイル
|
|
36
|
+
parenArrow: /\(([^)]+)\)\s*(?:-->|->|==>|=>|--)\s*\(([^)]+)\)/,
|
|
37
|
+
// Node --> Node スタイル(行全体が矢印)
|
|
38
|
+
simpleArrow: /^\s*\S+\s*(?:-->|->|==>|=>)\s*\S+\s*$/,
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* テキストからASCII図を検出
|
|
42
|
+
* @param text 入力テキスト
|
|
43
|
+
* @returns 検出されたASCII図配列
|
|
44
|
+
*/
|
|
45
|
+
detect(text) {
|
|
46
|
+
const diagrams = [];
|
|
47
|
+
const lines = text.split('\n');
|
|
48
|
+
let i = 0;
|
|
49
|
+
while (i < lines.length) {
|
|
50
|
+
// テーブル検出
|
|
51
|
+
const tableResult = this.detectTable(lines, i);
|
|
52
|
+
if (tableResult) {
|
|
53
|
+
diagrams.push(tableResult.diagram);
|
|
54
|
+
i = tableResult.endLine + 1;
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
// ツリー検出
|
|
58
|
+
const treeResult = this.detectTree(lines, i);
|
|
59
|
+
if (treeResult) {
|
|
60
|
+
diagrams.push(treeResult.diagram);
|
|
61
|
+
i = treeResult.endLine + 1;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
// ボックス検出
|
|
65
|
+
const boxResult = this.detectBox(lines, i);
|
|
66
|
+
if (boxResult) {
|
|
67
|
+
diagrams.push(boxResult.diagram);
|
|
68
|
+
i = boxResult.endLine + 1;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
// フローチャート検出
|
|
72
|
+
const flowchartResult = this.detectFlowchart(lines, i);
|
|
73
|
+
if (flowchartResult) {
|
|
74
|
+
diagrams.push(flowchartResult.diagram);
|
|
75
|
+
i = flowchartResult.endLine + 1;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
i++;
|
|
79
|
+
}
|
|
80
|
+
return diagrams;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* ASCII図をMermaidに変換
|
|
84
|
+
* @param diagram ASCII図
|
|
85
|
+
* @returns Mermaid形式の文字列
|
|
86
|
+
*/
|
|
87
|
+
convertToMermaid(diagram) {
|
|
88
|
+
switch (diagram.type) {
|
|
89
|
+
case 'flowchart':
|
|
90
|
+
return this.convertFlowchartToMermaid(diagram.original);
|
|
91
|
+
case 'tree':
|
|
92
|
+
return this.convertTreeToMermaid(diagram.original);
|
|
93
|
+
case 'box':
|
|
94
|
+
return this.convertBoxToMermaid(diagram.original);
|
|
95
|
+
case 'table':
|
|
96
|
+
// テーブルはMarkdownの方が適切
|
|
97
|
+
return this.convertTableToMarkdown(diagram.original);
|
|
98
|
+
default:
|
|
99
|
+
return diagram.original;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* ASCII図をMarkdownに変換
|
|
104
|
+
* @param diagram ASCII図
|
|
105
|
+
* @returns Markdown形式の文字列
|
|
106
|
+
*/
|
|
107
|
+
convertToMarkdown(diagram) {
|
|
108
|
+
switch (diagram.type) {
|
|
109
|
+
case 'table':
|
|
110
|
+
return this.convertTableToMarkdown(diagram.original);
|
|
111
|
+
case 'tree':
|
|
112
|
+
return this.convertTreeToMarkdownList(diagram.original);
|
|
113
|
+
case 'flowchart':
|
|
114
|
+
case 'box':
|
|
115
|
+
// フローチャートとボックスはMermaidが適切
|
|
116
|
+
return this.convertToMermaid(diagram);
|
|
117
|
+
default:
|
|
118
|
+
return diagram.original;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// =========================================================================
|
|
122
|
+
// 検出メソッド
|
|
123
|
+
// =========================================================================
|
|
124
|
+
detectTable(lines, startLine) {
|
|
125
|
+
const line = lines[startLine];
|
|
126
|
+
if (!line)
|
|
127
|
+
return null;
|
|
128
|
+
// +---+---+ スタイルのテーブル開始を検出
|
|
129
|
+
if (AsciiDiagramConverter.TABLE_PATTERNS.plusStyle.test(line)) {
|
|
130
|
+
let endLine = startLine;
|
|
131
|
+
// テーブル終了を探す
|
|
132
|
+
for (let i = startLine + 1; i < lines.length; i++) {
|
|
133
|
+
const currentLine = lines[i] || '';
|
|
134
|
+
if (AsciiDiagramConverter.TABLE_PATTERNS.plusStyle.test(currentLine)) {
|
|
135
|
+
endLine = i;
|
|
136
|
+
// 次の行もテーブルの一部かチェック
|
|
137
|
+
const nextLine = lines[i + 1];
|
|
138
|
+
if (nextLine &&
|
|
139
|
+
!AsciiDiagramConverter.TABLE_PATTERNS.plusStyle.test(nextLine) &&
|
|
140
|
+
!AsciiDiagramConverter.TABLE_PATTERNS.cellRow.test(nextLine)) {
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else if (!AsciiDiagramConverter.TABLE_PATTERNS.cellRow.test(currentLine)) {
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
endLine = i;
|
|
148
|
+
}
|
|
149
|
+
if (endLine > startLine) {
|
|
150
|
+
const original = lines.slice(startLine, endLine + 1).join('\n');
|
|
151
|
+
const startIndex = lines.slice(0, startLine).join('\n').length + (startLine > 0 ? 1 : 0);
|
|
152
|
+
return {
|
|
153
|
+
diagram: {
|
|
154
|
+
type: 'table',
|
|
155
|
+
original,
|
|
156
|
+
startIndex,
|
|
157
|
+
endIndex: startIndex + original.length,
|
|
158
|
+
lineNumber: startLine + 1,
|
|
159
|
+
},
|
|
160
|
+
endLine,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
detectTree(lines, startLine) {
|
|
167
|
+
const line = lines[startLine];
|
|
168
|
+
if (!line)
|
|
169
|
+
return null;
|
|
170
|
+
// ツリーノード検出
|
|
171
|
+
if (AsciiDiagramConverter.TREE_PATTERNS.treeNode.test(line)) {
|
|
172
|
+
let endLine = startLine;
|
|
173
|
+
for (let i = startLine + 1; i < lines.length; i++) {
|
|
174
|
+
const currentLine = lines[i] || '';
|
|
175
|
+
if (AsciiDiagramConverter.TREE_PATTERNS.treeNode.test(currentLine) ||
|
|
176
|
+
/^[\s]*[│]\s*$/.test(currentLine) // 縦線のみの行
|
|
177
|
+
) {
|
|
178
|
+
endLine = i;
|
|
179
|
+
}
|
|
180
|
+
else if (currentLine.trim() === '') {
|
|
181
|
+
// 空行で終了
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (endLine > startLine) {
|
|
189
|
+
const original = lines.slice(startLine, endLine + 1).join('\n');
|
|
190
|
+
const startIndex = lines.slice(0, startLine).join('\n').length + (startLine > 0 ? 1 : 0);
|
|
191
|
+
return {
|
|
192
|
+
diagram: {
|
|
193
|
+
type: 'tree',
|
|
194
|
+
original,
|
|
195
|
+
startIndex,
|
|
196
|
+
endIndex: startIndex + original.length,
|
|
197
|
+
lineNumber: startLine + 1,
|
|
198
|
+
},
|
|
199
|
+
endLine,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
detectBox(lines, startLine) {
|
|
206
|
+
const line = lines[startLine];
|
|
207
|
+
if (!line)
|
|
208
|
+
return null;
|
|
209
|
+
// ┌ で始まるボックス
|
|
210
|
+
if (/^\s*┌/.test(line)) {
|
|
211
|
+
let endLine = startLine;
|
|
212
|
+
for (let i = startLine + 1; i < lines.length; i++) {
|
|
213
|
+
const currentLine = lines[i] || '';
|
|
214
|
+
if (/^\s*└/.test(currentLine)) {
|
|
215
|
+
endLine = i;
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
else if (/^\s*│/.test(currentLine)) {
|
|
219
|
+
endLine = i;
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (endLine > startLine) {
|
|
226
|
+
const original = lines.slice(startLine, endLine + 1).join('\n');
|
|
227
|
+
const startIndex = lines.slice(0, startLine).join('\n').length + (startLine > 0 ? 1 : 0);
|
|
228
|
+
return {
|
|
229
|
+
diagram: {
|
|
230
|
+
type: 'box',
|
|
231
|
+
original,
|
|
232
|
+
startIndex,
|
|
233
|
+
endIndex: startIndex + original.length,
|
|
234
|
+
lineNumber: startLine + 1,
|
|
235
|
+
},
|
|
236
|
+
endLine,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
detectFlowchart(lines, startLine) {
|
|
243
|
+
const line = lines[startLine];
|
|
244
|
+
if (!line)
|
|
245
|
+
return null;
|
|
246
|
+
// [Node] --> [Node] パターン
|
|
247
|
+
if (AsciiDiagramConverter.FLOWCHART_PATTERNS.bracketArrow.test(line)) {
|
|
248
|
+
let endLine = startLine;
|
|
249
|
+
for (let i = startLine + 1; i < lines.length; i++) {
|
|
250
|
+
const currentLine = lines[i] || '';
|
|
251
|
+
if (AsciiDiagramConverter.FLOWCHART_PATTERNS.bracketArrow.test(currentLine) ||
|
|
252
|
+
AsciiDiagramConverter.FLOWCHART_PATTERNS.parenArrow.test(currentLine) ||
|
|
253
|
+
/^\s*\|?\s*v?\s*$/.test(currentLine) || // 縦線のみ
|
|
254
|
+
/^\s*$/.test(currentLine) // 空行(フローチャート内の区切り)
|
|
255
|
+
) {
|
|
256
|
+
// 連続する空行は終了とみなす
|
|
257
|
+
const nextLine = lines[i + 1];
|
|
258
|
+
if (/^\s*$/.test(currentLine) && nextLine !== undefined && /^\s*$/.test(nextLine)) {
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
endLine = i;
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
const original = lines.slice(startLine, endLine + 1).join('\n');
|
|
268
|
+
const startIndex = lines.slice(0, startLine).join('\n').length + (startLine > 0 ? 1 : 0);
|
|
269
|
+
return {
|
|
270
|
+
diagram: {
|
|
271
|
+
type: 'flowchart',
|
|
272
|
+
original,
|
|
273
|
+
startIndex,
|
|
274
|
+
endIndex: startIndex + original.length,
|
|
275
|
+
lineNumber: startLine + 1,
|
|
276
|
+
},
|
|
277
|
+
endLine,
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
// =========================================================================
|
|
283
|
+
// 変換メソッド
|
|
284
|
+
// =========================================================================
|
|
285
|
+
convertTableToMarkdown(ascii) {
|
|
286
|
+
const lines = ascii.split('\n').filter((l) => l.trim());
|
|
287
|
+
const dataRows = [];
|
|
288
|
+
for (const line of lines) {
|
|
289
|
+
// +---+---+ 行はスキップ
|
|
290
|
+
if (AsciiDiagramConverter.TABLE_PATTERNS.plusStyle.test(line)) {
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
// | cell | cell | 行からセルを抽出
|
|
294
|
+
if (line.includes('|')) {
|
|
295
|
+
const cells = line
|
|
296
|
+
.split('|')
|
|
297
|
+
.slice(1, -1) // 最初と最後の空要素を除去
|
|
298
|
+
.map((c) => c.trim());
|
|
299
|
+
if (cells.length > 0 && cells.some((c) => c !== '')) {
|
|
300
|
+
dataRows.push(cells);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
if (dataRows.length === 0)
|
|
305
|
+
return ascii;
|
|
306
|
+
// Markdown テーブル生成
|
|
307
|
+
const result = [];
|
|
308
|
+
const colCount = Math.max(...dataRows.map((r) => r.length));
|
|
309
|
+
// ヘッダー行
|
|
310
|
+
if (dataRows[0]) {
|
|
311
|
+
const header = dataRows[0].map((c) => c || '').concat(Array(colCount - dataRows[0].length).fill(''));
|
|
312
|
+
result.push(`| ${header.join(' | ')} |`);
|
|
313
|
+
result.push(`| ${header.map(() => '---').join(' | ')} |`);
|
|
314
|
+
}
|
|
315
|
+
// データ行
|
|
316
|
+
for (let i = 1; i < dataRows.length; i++) {
|
|
317
|
+
const row = dataRows[i];
|
|
318
|
+
if (row) {
|
|
319
|
+
const cells = row.map((c) => c || '').concat(Array(colCount - row.length).fill(''));
|
|
320
|
+
result.push(`| ${cells.join(' | ')} |`);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
return result.join('\n');
|
|
324
|
+
}
|
|
325
|
+
convertTreeToMarkdownList(ascii) {
|
|
326
|
+
const lines = ascii.split('\n');
|
|
327
|
+
const result = [];
|
|
328
|
+
for (const line of lines) {
|
|
329
|
+
// ツリー記号を除去してインデントレベルを計算
|
|
330
|
+
const match = line.match(/^([\s│]*)[├└─┬┴┼├┤]*\s*(.+)$/);
|
|
331
|
+
if (match) {
|
|
332
|
+
const [, indent, content] = match;
|
|
333
|
+
const level = Math.floor((indent?.replace(/│/g, ' ').length || 0) / 2);
|
|
334
|
+
const cleanContent = content?.trim() || '';
|
|
335
|
+
if (cleanContent) {
|
|
336
|
+
result.push(`${' '.repeat(level)}- ${cleanContent}`);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
return result.join('\n') || ascii;
|
|
341
|
+
}
|
|
342
|
+
convertTreeToMermaid(ascii) {
|
|
343
|
+
const lines = ascii.split('\n');
|
|
344
|
+
const nodes = [];
|
|
345
|
+
const edges = [];
|
|
346
|
+
let nodeId = 0;
|
|
347
|
+
const levelStack = [];
|
|
348
|
+
for (const line of lines) {
|
|
349
|
+
const match = line.match(/^([\s│]*)[├└─┬┴┼├┤]*\s*(.+)$/);
|
|
350
|
+
if (match) {
|
|
351
|
+
const [, indent, content] = match;
|
|
352
|
+
const level = Math.floor((indent?.replace(/│/g, ' ').length || 0) / 2);
|
|
353
|
+
const cleanContent = content?.trim() || '';
|
|
354
|
+
if (cleanContent) {
|
|
355
|
+
const id = `node${nodeId++}`;
|
|
356
|
+
nodes.push({ id, label: cleanContent, level });
|
|
357
|
+
// レベルスタックを更新
|
|
358
|
+
levelStack[level] = id;
|
|
359
|
+
// 親ノードとの接続
|
|
360
|
+
if (level > 0 && levelStack[level - 1]) {
|
|
361
|
+
edges.push({ from: levelStack[level - 1], to: id });
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
if (nodes.length === 0)
|
|
367
|
+
return ascii;
|
|
368
|
+
// Mermaid graph生成
|
|
369
|
+
const result = ['```mermaid', 'graph TD'];
|
|
370
|
+
for (const node of nodes) {
|
|
371
|
+
result.push(` ${node.id}[${node.label}]`);
|
|
372
|
+
}
|
|
373
|
+
for (const edge of edges) {
|
|
374
|
+
result.push(` ${edge.from} --> ${edge.to}`);
|
|
375
|
+
}
|
|
376
|
+
result.push('```');
|
|
377
|
+
return result.join('\n');
|
|
378
|
+
}
|
|
379
|
+
convertFlowchartToMermaid(ascii) {
|
|
380
|
+
const lines = ascii.split('\n');
|
|
381
|
+
const edges = [];
|
|
382
|
+
const nodeSet = new Set();
|
|
383
|
+
for (const line of lines) {
|
|
384
|
+
// [Node1] --> [Node2] パターン
|
|
385
|
+
const bracketMatch = line.match(/\[([^\]]+)\]\s*(?:-->|->|==>|=>|--)\s*\[([^\]]+)\]/g);
|
|
386
|
+
if (bracketMatch) {
|
|
387
|
+
for (const match of bracketMatch) {
|
|
388
|
+
const parts = match.match(/\[([^\]]+)\]\s*(?:-->|->|==>|=>|--)\s*\[([^\]]+)\]/);
|
|
389
|
+
if (parts && parts[1] && parts[2]) {
|
|
390
|
+
const from = this.sanitizeNodeId(parts[1]);
|
|
391
|
+
const to = this.sanitizeNodeId(parts[2]);
|
|
392
|
+
edges.push({ from, to });
|
|
393
|
+
nodeSet.add(from);
|
|
394
|
+
nodeSet.add(to);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
// (Node1) --> (Node2) パターン
|
|
399
|
+
const parenMatch = line.match(/\(([^)]+)\)\s*(?:-->|->|==>|=>|--)\s*\(([^)]+)\)/g);
|
|
400
|
+
if (parenMatch) {
|
|
401
|
+
for (const match of parenMatch) {
|
|
402
|
+
const parts = match.match(/\(([^)]+)\)\s*(?:-->|->|==>|=>|--)\s*\(([^)]+)\)/);
|
|
403
|
+
if (parts && parts[1] && parts[2]) {
|
|
404
|
+
const from = this.sanitizeNodeId(parts[1]);
|
|
405
|
+
const to = this.sanitizeNodeId(parts[2]);
|
|
406
|
+
edges.push({ from, to });
|
|
407
|
+
nodeSet.add(from);
|
|
408
|
+
nodeSet.add(to);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
if (edges.length === 0)
|
|
414
|
+
return ascii;
|
|
415
|
+
// Mermaid flowchart生成
|
|
416
|
+
const result = ['```mermaid', 'flowchart TD'];
|
|
417
|
+
for (const edge of edges) {
|
|
418
|
+
result.push(` ${edge.from} --> ${edge.to}`);
|
|
419
|
+
}
|
|
420
|
+
result.push('```');
|
|
421
|
+
return result.join('\n');
|
|
422
|
+
}
|
|
423
|
+
convertBoxToMermaid(ascii) {
|
|
424
|
+
const lines = ascii.split('\n');
|
|
425
|
+
const boxes = [];
|
|
426
|
+
for (const line of lines) {
|
|
427
|
+
// │ content │ パターンからコンテンツを抽出
|
|
428
|
+
const match = line.match(/│\s*(.+?)\s*│/);
|
|
429
|
+
if (match && match[1]) {
|
|
430
|
+
const content = match[1].trim();
|
|
431
|
+
if (content && !/^[-─]+$/.test(content)) {
|
|
432
|
+
boxes.push(content);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
if (boxes.length === 0)
|
|
437
|
+
return ascii;
|
|
438
|
+
// シンプルなボックスとして Mermaid graph生成
|
|
439
|
+
const result = ['```mermaid', 'graph TD'];
|
|
440
|
+
boxes.forEach((box, i) => {
|
|
441
|
+
const id = `box${i}`;
|
|
442
|
+
result.push(` ${id}[${box}]`);
|
|
443
|
+
if (i > 0) {
|
|
444
|
+
result.push(` box${i - 1} --> ${id}`);
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
result.push('```');
|
|
448
|
+
return result.join('\n');
|
|
449
|
+
}
|
|
450
|
+
sanitizeNodeId(label) {
|
|
451
|
+
// Mermaidのノード名として使える形式に変換
|
|
452
|
+
return label
|
|
453
|
+
.trim()
|
|
454
|
+
.replace(/[^\w\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FAF]/g, '_')
|
|
455
|
+
.replace(/_+/g, '_')
|
|
456
|
+
.replace(/^_|_$/g, '') || 'node';
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
exports.AsciiDiagramConverter = AsciiDiagramConverter;
|
|
460
|
+
//# sourceMappingURL=AsciiDiagramConverter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsciiDiagramConverter.js","sourceRoot":"","sources":["../../src/consensus/AsciiDiagramConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KATASHIRO v1.3.0 - ConsensusResearchEngine
|
|
3
|
+
* 反復合議型リサーチワークフローのメインオーケストレーター
|
|
4
|
+
* @module @nahisaho/katashiro-orchestrator/consensus
|
|
5
|
+
* @version 1.3.0
|
|
6
|
+
*/
|
|
7
|
+
import { ConsensusResearchConfig, ConsensusResearchResult, ConsensusResearchEventListener } from './types';
|
|
8
|
+
import { ResearchAgentDependencies } from './ResearchAgent';
|
|
9
|
+
/**
|
|
10
|
+
* 合議型リサーチエンジン
|
|
11
|
+
* @requirement REQ-1.2.0-WFL-001 ~ REQ-1.2.0-WFL-005, REQ-1.3.0-INT-001
|
|
12
|
+
*/
|
|
13
|
+
export declare class ConsensusResearchEngine {
|
|
14
|
+
private readonly config;
|
|
15
|
+
private readonly agents;
|
|
16
|
+
private readonly scorer;
|
|
17
|
+
private readonly selector;
|
|
18
|
+
private readonly postProcessor;
|
|
19
|
+
private readonly eventEmitter;
|
|
20
|
+
/**
|
|
21
|
+
* コンストラクタ
|
|
22
|
+
* @param config 設定
|
|
23
|
+
* @param deps 依存性(テスト用)
|
|
24
|
+
*/
|
|
25
|
+
constructor(config?: Partial<ConsensusResearchConfig>, deps?: ResearchAgentDependencies);
|
|
26
|
+
/**
|
|
27
|
+
* イベントリスナーを登録
|
|
28
|
+
*/
|
|
29
|
+
on(listener: ConsensusResearchEventListener): this;
|
|
30
|
+
/**
|
|
31
|
+
* イベントリスナーを解除
|
|
32
|
+
*/
|
|
33
|
+
off(listener: ConsensusResearchEventListener): this;
|
|
34
|
+
/**
|
|
35
|
+
* イベントを発行
|
|
36
|
+
*/
|
|
37
|
+
private emit;
|
|
38
|
+
/**
|
|
39
|
+
* 反復合議型リサーチを実行
|
|
40
|
+
* @requirement REQ-1.2.0-WFL-001, REQ-1.2.0-WFL-004, REQ-1.2.0-WFL-005
|
|
41
|
+
* @param topic リサーチトピック
|
|
42
|
+
* @param options オプション設定
|
|
43
|
+
* @returns 最終結果
|
|
44
|
+
*/
|
|
45
|
+
research(topic: string, options?: Partial<ConsensusResearchConfig>): Promise<ConsensusResearchResult>;
|
|
46
|
+
/**
|
|
47
|
+
* 1イテレーションを実行
|
|
48
|
+
* @requirement REQ-1.2.0-WFL-001, REQ-1.2.0-WFL-002, REQ-1.2.0-WFL-003
|
|
49
|
+
*/
|
|
50
|
+
private runIteration;
|
|
51
|
+
/**
|
|
52
|
+
* エージェントを並列実行
|
|
53
|
+
* @requirement REQ-1.2.0-WFL-001, REQ-1.2.0-ERR-001, REQ-1.2.0-ERR-002
|
|
54
|
+
*/
|
|
55
|
+
private executeAgentsInParallel;
|
|
56
|
+
/**
|
|
57
|
+
* タイムアウトPromiseを作成
|
|
58
|
+
*/
|
|
59
|
+
private createTimeout;
|
|
60
|
+
/**
|
|
61
|
+
* 早期終了を判定
|
|
62
|
+
* @requirement REQ-1.2.0-WFL-004 (AC4: 2連続でスコア改善<5%の場合は早期終了)
|
|
63
|
+
*/
|
|
64
|
+
private shouldTerminateEarly;
|
|
65
|
+
/**
|
|
66
|
+
* 次イテレーションのコンテキストを構築
|
|
67
|
+
* @requirement REQ-1.2.0-WFL-001, REQ-1.2.0-WFL-003
|
|
68
|
+
*/
|
|
69
|
+
private buildNextContext;
|
|
70
|
+
/**
|
|
71
|
+
* 最終レポートを生成
|
|
72
|
+
* @requirement REQ-1.2.0-WFL-005
|
|
73
|
+
*/
|
|
74
|
+
private generateFinalReport;
|
|
75
|
+
/**
|
|
76
|
+
* エグゼクティブサマリーを生成
|
|
77
|
+
*/
|
|
78
|
+
private generateExecutiveSummary;
|
|
79
|
+
/**
|
|
80
|
+
* 全イテレーションから主要な発見を抽出
|
|
81
|
+
*/
|
|
82
|
+
private extractKeyFindings;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=ConsensusResearchEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsensusResearchEngine.d.ts","sourceRoot":"","sources":["../../src/consensus/ConsensusResearchEngine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EAEvB,8BAA8B,EAS/B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAiB,yBAAyB,EAA6B,MAAM,iBAAiB,CAAC;AAKtG;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAE5C;;;;OAIG;gBAED,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,EACzC,IAAI,CAAC,EAAE,yBAAyB;IAiBlC;;OAEG;IACH,EAAE,CAAC,QAAQ,EAAE,8BAA8B,GAAG,IAAI;IAKlD;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,8BAA8B,GAAG,IAAI;IAKnD;;OAEG;IACH,OAAO,CAAC,IAAI;IAIZ;;;;;;OAMG;IACG,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GACzC,OAAO,CAAC,uBAAuB,CAAC;IAuEnC;;;OAGG;YACW,YAAY;IAmD1B;;;OAGG;YACW,uBAAuB;IAmErC;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAqC5B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAoDxB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA8E3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmBhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAmB3B"}
|