@nahisaho/katashiro-orchestrator 1.0.1 → 1.2.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.
@@ -0,0 +1,83 @@
1
+ /**
2
+ * KATASHIRO v1.2.0 - ConsensusResearchEngine
3
+ * 反復合議型リサーチワークフローのメインオーケストレーター
4
+ * @module @nahisaho/katashiro-orchestrator/consensus
5
+ * @version 1.2.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
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 eventEmitter;
19
+ /**
20
+ * コンストラクタ
21
+ * @param config 設定
22
+ * @param deps 依存性(テスト用)
23
+ */
24
+ constructor(config?: Partial<ConsensusResearchConfig>, deps?: ResearchAgentDependencies);
25
+ /**
26
+ * イベントリスナーを登録
27
+ */
28
+ on(listener: ConsensusResearchEventListener): this;
29
+ /**
30
+ * イベントリスナーを解除
31
+ */
32
+ off(listener: ConsensusResearchEventListener): this;
33
+ /**
34
+ * イベントを発行
35
+ */
36
+ private emit;
37
+ /**
38
+ * 反復合議型リサーチを実行
39
+ * @requirement REQ-1.2.0-WFL-001, REQ-1.2.0-WFL-004, REQ-1.2.0-WFL-005
40
+ * @param topic リサーチトピック
41
+ * @param options オプション設定
42
+ * @returns 最終結果
43
+ */
44
+ research(topic: string, options?: Partial<ConsensusResearchConfig>): Promise<ConsensusResearchResult>;
45
+ /**
46
+ * 1イテレーションを実行
47
+ * @requirement REQ-1.2.0-WFL-001, REQ-1.2.0-WFL-002, REQ-1.2.0-WFL-003
48
+ */
49
+ private runIteration;
50
+ /**
51
+ * エージェントを並列実行
52
+ * @requirement REQ-1.2.0-WFL-001, REQ-1.2.0-ERR-001, REQ-1.2.0-ERR-002
53
+ */
54
+ private executeAgentsInParallel;
55
+ /**
56
+ * タイムアウトPromiseを作成
57
+ */
58
+ private createTimeout;
59
+ /**
60
+ * 早期終了を判定
61
+ * @requirement REQ-1.2.0-WFL-004 (AC4: 2連続でスコア改善<5%の場合は早期終了)
62
+ */
63
+ private shouldTerminateEarly;
64
+ /**
65
+ * 次イテレーションのコンテキストを構築
66
+ * @requirement REQ-1.2.0-WFL-001, REQ-1.2.0-WFL-003
67
+ */
68
+ private buildNextContext;
69
+ /**
70
+ * 最終レポートを生成
71
+ * @requirement REQ-1.2.0-WFL-005
72
+ */
73
+ private generateFinalReport;
74
+ /**
75
+ * エグゼクティブサマリーを生成
76
+ */
77
+ private generateExecutiveSummary;
78
+ /**
79
+ * 全イテレーションから主要な発見を抽出
80
+ */
81
+ private extractKeyFindings;
82
+ }
83
+ //# 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;AAItG;;;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,YAAY,CAAe;IAE5C;;;;OAIG;gBAED,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,EACzC,IAAI,CAAC,EAAE,yBAAyB;IAgBlC;;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;IAkE3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmBhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAmB3B"}
@@ -0,0 +1,397 @@
1
+ "use strict";
2
+ /**
3
+ * KATASHIRO v1.2.0 - ConsensusResearchEngine
4
+ * 反復合議型リサーチワークフローのメインオーケストレーター
5
+ * @module @nahisaho/katashiro-orchestrator/consensus
6
+ * @version 1.2.0
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ConsensusResearchEngine = void 0;
10
+ const events_1 = require("events");
11
+ const types_1 = require("./types");
12
+ const ResearchAgent_1 = require("./ResearchAgent");
13
+ const ReportScorer_1 = require("./ReportScorer");
14
+ const ConsensusSelector_1 = require("./ConsensusSelector");
15
+ /**
16
+ * 合議型リサーチエンジン
17
+ * @requirement REQ-1.2.0-WFL-001 ~ REQ-1.2.0-WFL-005
18
+ */
19
+ class ConsensusResearchEngine {
20
+ config;
21
+ agents;
22
+ scorer;
23
+ selector;
24
+ eventEmitter;
25
+ /**
26
+ * コンストラクタ
27
+ * @param config 設定
28
+ * @param deps 依存性(テスト用)
29
+ */
30
+ constructor(config, deps) {
31
+ this.config = { ...types_1.DEFAULT_CONSENSUS_CONFIG, ...config };
32
+ this.eventEmitter = new events_1.EventEmitter();
33
+ this.scorer = new ReportScorer_1.ReportScorer(this.config.conflictThreshold);
34
+ this.selector = new ConsensusSelector_1.ConsensusSelector();
35
+ // エージェント作成
36
+ const agentDeps = deps || (0, ResearchAgent_1.createDefaultDependencies)();
37
+ this.agents = [];
38
+ for (let i = 1; i <= this.config.agentCount; i++) {
39
+ const strategy = types_1.DEFAULT_AGENT_STRATEGIES[i - 1] || types_1.DEFAULT_AGENT_STRATEGIES[0];
40
+ this.agents.push(new ResearchAgent_1.ResearchAgent(i, agentDeps, strategy));
41
+ }
42
+ }
43
+ /**
44
+ * イベントリスナーを登録
45
+ */
46
+ on(listener) {
47
+ this.eventEmitter.on('event', listener);
48
+ return this;
49
+ }
50
+ /**
51
+ * イベントリスナーを解除
52
+ */
53
+ off(listener) {
54
+ this.eventEmitter.off('event', listener);
55
+ return this;
56
+ }
57
+ /**
58
+ * イベントを発行
59
+ */
60
+ emit(event) {
61
+ this.eventEmitter.emit('event', event);
62
+ }
63
+ /**
64
+ * 反復合議型リサーチを実行
65
+ * @requirement REQ-1.2.0-WFL-001, REQ-1.2.0-WFL-004, REQ-1.2.0-WFL-005
66
+ * @param topic リサーチトピック
67
+ * @param options オプション設定
68
+ * @returns 最終結果
69
+ */
70
+ async research(topic, options) {
71
+ const startedAt = new Date().toISOString();
72
+ const config = { ...this.config, ...options, topic };
73
+ this.emit({ type: 'researchStarted', topic, config });
74
+ const iterations = [];
75
+ let currentContext = {
76
+ iteration: 1,
77
+ topic,
78
+ previousConsensus: null,
79
+ previousScore: null,
80
+ unresolvedQuestions: [],
81
+ coveredSources: [],
82
+ areasToDeepen: [],
83
+ isInitial: true,
84
+ };
85
+ try {
86
+ for (let i = 1; i <= config.iterationCount; i++) {
87
+ currentContext.iteration = i;
88
+ currentContext.isInitial = i === 1;
89
+ const iterationResult = await this.runIteration(currentContext);
90
+ iterations.push(iterationResult);
91
+ // 早期終了判定(AC4: 2連続で改善<5%)
92
+ if (i >= 2 && this.shouldTerminateEarly(iterations)) {
93
+ break;
94
+ }
95
+ // 次のコンテキストを構築
96
+ const selectedScore = iterationResult.scores.find((s) => s.reportId === iterationResult.selectedReportId);
97
+ if (selectedScore) {
98
+ currentContext = this.buildNextContext(currentContext, iterationResult.consensusReport, selectedScore);
99
+ }
100
+ }
101
+ const finalReport = this.generateFinalReport(iterations);
102
+ const finalIteration = iterations[iterations.length - 1];
103
+ const finalScore = finalIteration.scores.find((s) => s.reportId === finalIteration.selectedReportId) ?? finalIteration.scores[0];
104
+ const result = {
105
+ finalReport,
106
+ iterations,
107
+ totalDurationMs: Date.now() - new Date(startedAt).getTime(),
108
+ totalAgentRuns: iterations.length * config.agentCount,
109
+ finalScore,
110
+ metadata: {
111
+ topic,
112
+ startedAt,
113
+ completedAt: new Date().toISOString(),
114
+ config,
115
+ },
116
+ };
117
+ this.emit({ type: 'researchCompleted', result });
118
+ return result;
119
+ }
120
+ catch (error) {
121
+ this.emit({ type: 'researchFailed', error: error });
122
+ throw error;
123
+ }
124
+ }
125
+ /**
126
+ * 1イテレーションを実行
127
+ * @requirement REQ-1.2.0-WFL-001, REQ-1.2.0-WFL-002, REQ-1.2.0-WFL-003
128
+ */
129
+ async runIteration(context) {
130
+ const startTime = Date.now();
131
+ this.emit({ type: 'iterationStarted', iteration: context.iteration, context });
132
+ // 1. エージェント並列実行
133
+ const agentReports = await this.executeAgentsInParallel(context);
134
+ // 2. スコアリング
135
+ const scores = this.scorer.scoreReports(agentReports);
136
+ this.emit({ type: 'scoringCompleted', iteration: context.iteration, scores });
137
+ // 3. コンセンサス選択
138
+ const selection = this.selector.select(scores);
139
+ const selectedReport = agentReports.find((r) => r.reportId === selection.selectedReportId);
140
+ if (!selectedReport) {
141
+ throw new types_1.ConsensusResearchError(types_1.ConsensusResearchErrorCode.SELECTION_ERROR, 'Selected report not found');
142
+ }
143
+ this.emit({
144
+ type: 'consensusSelected',
145
+ iteration: context.iteration,
146
+ selectedAgentId: selectedReport.agentId,
147
+ reason: selection.reason,
148
+ });
149
+ const result = {
150
+ iteration: context.iteration,
151
+ agentReports,
152
+ scores,
153
+ consensusReport: selectedReport.content,
154
+ selectionReason: selection.reason,
155
+ durationMs: Date.now() - startTime,
156
+ selectedReportId: selection.selectedReportId,
157
+ };
158
+ this.emit({
159
+ type: 'iterationCompleted',
160
+ iteration: context.iteration,
161
+ durationMs: result.durationMs,
162
+ });
163
+ return result;
164
+ }
165
+ /**
166
+ * エージェントを並列実行
167
+ * @requirement REQ-1.2.0-WFL-001, REQ-1.2.0-ERR-001, REQ-1.2.0-ERR-002
168
+ */
169
+ async executeAgentsInParallel(context) {
170
+ const agentPromises = this.agents.map(async (agent) => {
171
+ const agentId = agent.agentId;
172
+ this.emit({
173
+ type: 'agentStarted',
174
+ iteration: context.iteration,
175
+ agentId,
176
+ strategy: agent.strategy,
177
+ });
178
+ const startTime = Date.now();
179
+ try {
180
+ // タイムアウト付き実行
181
+ const report = await Promise.race([
182
+ agent.execute(context),
183
+ this.createTimeout(this.config.agentTimeoutMs, agentId),
184
+ ]);
185
+ this.emit({
186
+ type: 'agentCompleted',
187
+ iteration: context.iteration,
188
+ agentId,
189
+ durationMs: Date.now() - startTime,
190
+ success: true,
191
+ });
192
+ return report;
193
+ }
194
+ catch (error) {
195
+ this.emit({
196
+ type: 'agentCompleted',
197
+ iteration: context.iteration,
198
+ agentId,
199
+ durationMs: Date.now() - startTime,
200
+ success: false,
201
+ });
202
+ console.error(`Agent ${agentId} failed:`, error);
203
+ return null;
204
+ }
205
+ });
206
+ // Promise.allSettledで全エージェントの完了を待つ
207
+ const results = await Promise.allSettled(agentPromises);
208
+ // 成功したレポートのみ抽出
209
+ const successfulReports = results
210
+ .filter((r) => r.status === 'fulfilled')
211
+ .map((r) => r.value)
212
+ .filter((r) => r !== null);
213
+ // 障害耐性チェック(AC3: 過半数失敗時はエラー)
214
+ if (successfulReports.length < Math.ceil(this.agents.length / 2)) {
215
+ throw new types_1.ConsensusResearchError(types_1.ConsensusResearchErrorCode.MAJORITY_FAILURE, `Majority of agents failed (${successfulReports.length}/${this.agents.length})`);
216
+ }
217
+ return successfulReports;
218
+ }
219
+ /**
220
+ * タイムアウトPromiseを作成
221
+ */
222
+ createTimeout(ms, agentId) {
223
+ return new Promise((_, reject) => {
224
+ setTimeout(() => {
225
+ reject(new types_1.ConsensusResearchError(types_1.ConsensusResearchErrorCode.AGENT_TIMEOUT, `Agent ${agentId} timed out after ${ms}ms`));
226
+ }, ms);
227
+ });
228
+ }
229
+ /**
230
+ * 早期終了を判定
231
+ * @requirement REQ-1.2.0-WFL-004 (AC4: 2連続でスコア改善<5%の場合は早期終了)
232
+ */
233
+ shouldTerminateEarly(iterations) {
234
+ if (iterations.length < 2)
235
+ return false;
236
+ // 直近2イテレーションのスコア改善率を計算
237
+ const current = iterations[iterations.length - 1];
238
+ const previous = iterations[iterations.length - 2];
239
+ const currentBestScore = Math.max(...current.scores.map((s) => s.totalScore));
240
+ const previousBestScore = Math.max(...previous.scores.map((s) => s.totalScore));
241
+ // 改善率 = (今回 - 前回) / 前回 * 100
242
+ const improvementRate = previousBestScore > 0
243
+ ? ((currentBestScore - previousBestScore) / previousBestScore) * 100
244
+ : 0;
245
+ // 5%未満の改善の場合
246
+ if (improvementRate < 5) {
247
+ // さらに前のイテレーションも確認(2連続判定)
248
+ if (iterations.length >= 3) {
249
+ const beforePrevious = iterations[iterations.length - 3];
250
+ const beforePreviousBestScore = Math.max(...beforePrevious.scores.map((s) => s.totalScore));
251
+ const previousImprovementRate = beforePreviousBestScore > 0
252
+ ? ((previousBestScore - beforePreviousBestScore) / beforePreviousBestScore) * 100
253
+ : 0;
254
+ // 2連続で5%未満なら早期終了
255
+ return previousImprovementRate < 5;
256
+ }
257
+ }
258
+ return false;
259
+ }
260
+ /**
261
+ * 次イテレーションのコンテキストを構築
262
+ * @requirement REQ-1.2.0-WFL-001, REQ-1.2.0-WFL-003
263
+ */
264
+ buildNextContext(current, consensusReport, consensusScore) {
265
+ // 1. カバー済みソースを更新
266
+ const newCoveredSources = [
267
+ ...current.coveredSources,
268
+ ...(consensusScore.sourceUrls || []),
269
+ ];
270
+ // 2. 未解決の質問を抽出(レポート内の「?」や「要検証」から)
271
+ const unresolvedPatterns = [
272
+ /([^。]+\?)/g, // 疑問文
273
+ /\[要検証\]([^。]+)/g, // 要検証ラベル
274
+ /今後の課題[::]([^。]+)/g, // 課題セクション
275
+ ];
276
+ const unresolvedQuestions = [];
277
+ for (const pattern of unresolvedPatterns) {
278
+ const matches = Array.from(consensusReport.matchAll(pattern));
279
+ for (const match of matches) {
280
+ const captured = match[1];
281
+ if (captured) {
282
+ unresolvedQuestions.push(captured.trim());
283
+ }
284
+ }
285
+ }
286
+ // 3. 深掘りエリアを特定(スコアの低い側面)
287
+ const areasToDeepen = [];
288
+ if (consensusScore.consistencyScore < 0.7) {
289
+ areasToDeepen.push('情報の整合性確認');
290
+ }
291
+ if (consensusScore.reliabilityScore < 0.7) {
292
+ areasToDeepen.push('信頼性の高いソースからの検証');
293
+ }
294
+ if (consensusScore.coverageScore < 0.7) {
295
+ areasToDeepen.push('調査範囲の拡大');
296
+ }
297
+ return {
298
+ iteration: current.iteration + 1,
299
+ topic: current.topic,
300
+ previousConsensus: consensusReport,
301
+ previousScore: consensusScore,
302
+ unresolvedQuestions: unresolvedQuestions.slice(0, 5), // 最大5件
303
+ coveredSources: Array.from(new Set(newCoveredSources)), // 重複除去
304
+ areasToDeepen,
305
+ isInitial: false,
306
+ };
307
+ }
308
+ /**
309
+ * 最終レポートを生成
310
+ * @requirement REQ-1.2.0-WFL-005
311
+ */
312
+ generateFinalReport(iterations) {
313
+ const finalIteration = iterations[iterations.length - 1];
314
+ const consensusReport = finalIteration.consensusReport;
315
+ // エグゼクティブサマリーを生成
316
+ const executiveSummary = this.generateExecutiveSummary(iterations);
317
+ // 調査プロセスの要約
318
+ const processOverview = iterations
319
+ .map((iter, idx) => {
320
+ const bestScore = Math.max(...iter.scores.map((s) => s.totalScore));
321
+ return `- **イテレーション ${idx + 1}**: スコア ${(bestScore * 100).toFixed(1)}% (${iter.selectionReason})`;
322
+ })
323
+ .join('\n');
324
+ // 全イテレーションで発見された主要な知見を統合
325
+ const keyFindings = this.extractKeyFindings(iterations);
326
+ // 参照ソース一覧
327
+ const allSources = iterations.flatMap((iter) => iter.agentReports.flatMap((r) => r.sources));
328
+ const uniqueSourcesMap = new Map(allSources.map((s) => [s.url, s]));
329
+ const uniqueSources = Array.from(uniqueSourcesMap.values());
330
+ const sourceList = uniqueSources
331
+ .sort((a, b) => (b.reliabilityScore || 0) - (a.reliabilityScore || 0))
332
+ .slice(0, 20)
333
+ .map((s) => `- [${s.title}](${s.url}) (信頼度: ${((s.reliabilityScore || 0) * 100).toFixed(0)}%)`)
334
+ .join('\n');
335
+ const finalScore = Math.max(...finalIteration.scores.map((s) => s.totalScore));
336
+ return `# 調査レポート
337
+
338
+ ## エグゼクティブサマリー
339
+
340
+ ${executiveSummary}
341
+
342
+ ## 調査プロセス
343
+
344
+ ${processOverview}
345
+
346
+ ## 詳細レポート
347
+
348
+ ${consensusReport}
349
+
350
+ ## 主要な発見
351
+
352
+ ${keyFindings}
353
+
354
+ ## 参照ソース
355
+
356
+ ${sourceList}
357
+
358
+ ---
359
+ *Generated by KATASHIRO Consensus Research Engine v1.2.0*
360
+ *Total Iterations: ${iterations.length}*
361
+ *Final Score: ${(finalScore * 100).toFixed(1)}%*
362
+ `;
363
+ }
364
+ /**
365
+ * エグゼクティブサマリーを生成
366
+ */
367
+ generateExecutiveSummary(iterations) {
368
+ const finalIteration = iterations[iterations.length - 1];
369
+ const initialIteration = iterations[0];
370
+ const finalScore = Math.max(...finalIteration.scores.map((s) => s.totalScore));
371
+ const initialScore = Math.max(...initialIteration.scores.map((s) => s.totalScore));
372
+ const improvement = initialScore > 0
373
+ ? (((finalScore - initialScore) / initialScore) * 100).toFixed(1)
374
+ : '0';
375
+ return (`本調査は${iterations.length}回の反復合議プロセスを経て完了しました。` +
376
+ `初回スコア${(initialScore * 100).toFixed(1)}%から最終スコア${(finalScore * 100).toFixed(1)}%まで、` +
377
+ `${improvement}%の品質向上を達成しました。`);
378
+ }
379
+ /**
380
+ * 全イテレーションから主要な発見を抽出
381
+ */
382
+ extractKeyFindings(iterations) {
383
+ const findings = [];
384
+ for (const iter of iterations) {
385
+ // 各イテレーションのコンセンサスレポートから「主要な発見」セクションを抽出
386
+ const findingsMatch = iter.consensusReport.match(/## 主要な発見[\s\S]*?(?=##|$)/);
387
+ if (findingsMatch) {
388
+ findings.push(findingsMatch[0].replace(/## 主要な発見\s*/, '').trim());
389
+ }
390
+ }
391
+ // 重複を除去して統合
392
+ const uniqueFindings = Array.from(new Set(findings.flatMap((f) => f.split('\n').filter((l) => l.trim()))));
393
+ return uniqueFindings.slice(0, 10).join('\n');
394
+ }
395
+ }
396
+ exports.ConsensusResearchEngine = ConsensusResearchEngine;
397
+ //# sourceMappingURL=ConsensusResearchEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsensusResearchEngine.js","sourceRoot":"","sources":["../../src/consensus/ConsensusResearchEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * KATASHIRO v1.2.0 - ConsensusSelector
3
+ * 最良レポートの選択ロジックを担当
4
+ * @module @nahisaho/katashiro-orchestrator/consensus
5
+ * @version 1.2.0
6
+ */
7
+ import { ReportScore, ConsensusSelection } from './types';
8
+ /**
9
+ * コンセンサスセレクター
10
+ * @requirement REQ-1.2.0-WFL-003
11
+ */
12
+ export declare class ConsensusSelector {
13
+ /**
14
+ * 最良レポートを選択
15
+ * @requirement REQ-1.2.0-WFL-003
16
+ * @param scores スコア配列
17
+ * @returns 選択結果
18
+ */
19
+ select(scores: ReportScore[]): ConsensusSelection;
20
+ /**
21
+ * 選択理由を生成
22
+ * @param selected 選択されたスコア
23
+ * @param others 他のスコア
24
+ * @returns 選択理由
25
+ */
26
+ private generateReason;
27
+ /**
28
+ * 選択結果の詳細分析を生成
29
+ * @param scores 全スコア
30
+ * @param selection 選択結果
31
+ * @returns 詳細分析
32
+ */
33
+ analyzeSelection(scores: ReportScore[], selection: ConsensusSelection): SelectionAnalysis;
34
+ /**
35
+ * 選択の信頼度を計算
36
+ */
37
+ private calculateSelectionConfidence;
38
+ }
39
+ /**
40
+ * 選択分析結果
41
+ */
42
+ export interface SelectionAnalysis {
43
+ /** 選択されたレポートID */
44
+ selectedReportId: string;
45
+ /** 選択されたスコア */
46
+ selectedScore: ReportScore;
47
+ /** 他との比較 */
48
+ comparison: {
49
+ totalScoreDiff: number;
50
+ consistencyDiff: number;
51
+ reliabilityDiff: number;
52
+ coverageDiff: number;
53
+ };
54
+ /** ランキング */
55
+ ranking: Array<{
56
+ reportId: string;
57
+ rank: number;
58
+ score: number;
59
+ }>;
60
+ /** 選択の信頼度 */
61
+ confidence: number;
62
+ }
63
+ //# sourceMappingURL=ConsensusSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsensusSelector.d.ts","sourceRoot":"","sources":["../../src/consensus/ConsensusSelector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,WAAW,EACX,kBAAkB,EAGnB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,kBAAkB;IAuCjD;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IActB;;;;;OAKG;IACH,gBAAgB,CACd,MAAM,EAAE,WAAW,EAAE,EACrB,SAAS,EAAE,kBAAkB,GAC5B,iBAAiB;IAmCpB;;OAEG;IACH,OAAO,CAAC,4BAA4B;CAiBrC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kBAAkB;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe;IACf,aAAa,EAAE,WAAW,CAAC;IAC3B,YAAY;IACZ,UAAU,EAAE;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,YAAY;IACZ,OAAO,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,aAAa;IACb,UAAU,EAAE,MAAM,CAAC;CACpB"}