@nahisaho/katashiro-analyzer 0.2.2 → 0.2.4

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 (153) hide show
  1. package/dist/factcheck/ClaimParser.d.ts +41 -0
  2. package/dist/factcheck/ClaimParser.d.ts.map +1 -0
  3. package/dist/factcheck/ClaimParser.js +149 -0
  4. package/dist/factcheck/ClaimParser.js.map +1 -0
  5. package/dist/factcheck/ConsistencyChecker.d.ts +56 -0
  6. package/dist/factcheck/ConsistencyChecker.d.ts.map +1 -0
  7. package/dist/factcheck/ConsistencyChecker.js +184 -0
  8. package/dist/factcheck/ConsistencyChecker.js.map +1 -0
  9. package/dist/factcheck/EvidenceCollector.d.ts +89 -0
  10. package/dist/factcheck/EvidenceCollector.d.ts.map +1 -0
  11. package/dist/factcheck/EvidenceCollector.js +222 -0
  12. package/dist/factcheck/EvidenceCollector.js.map +1 -0
  13. package/dist/factcheck/FactChecker.d.ts +81 -0
  14. package/dist/factcheck/FactChecker.d.ts.map +1 -0
  15. package/dist/factcheck/FactChecker.js +302 -0
  16. package/dist/factcheck/FactChecker.js.map +1 -0
  17. package/dist/factcheck/TrustedSourceRegistry.d.ts +47 -0
  18. package/dist/factcheck/TrustedSourceRegistry.d.ts.map +1 -0
  19. package/dist/factcheck/TrustedSourceRegistry.js +208 -0
  20. package/dist/factcheck/TrustedSourceRegistry.js.map +1 -0
  21. package/dist/factcheck/VerdictGenerator.d.ts +36 -0
  22. package/dist/factcheck/VerdictGenerator.d.ts.map +1 -0
  23. package/dist/factcheck/VerdictGenerator.js +154 -0
  24. package/dist/factcheck/VerdictGenerator.js.map +1 -0
  25. package/dist/factcheck/index.d.ts +15 -0
  26. package/dist/factcheck/index.d.ts.map +1 -0
  27. package/dist/factcheck/index.js +14 -0
  28. package/dist/factcheck/index.js.map +1 -0
  29. package/dist/factcheck/types.d.ts +265 -0
  30. package/dist/factcheck/types.d.ts.map +1 -0
  31. package/dist/factcheck/types.js +18 -0
  32. package/dist/factcheck/types.js.map +1 -0
  33. package/dist/index.d.ts +5 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +10 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/interpreter/CodeInterpreter.d.ts +119 -0
  38. package/dist/interpreter/CodeInterpreter.d.ts.map +1 -0
  39. package/dist/interpreter/CodeInterpreter.js +241 -0
  40. package/dist/interpreter/CodeInterpreter.js.map +1 -0
  41. package/dist/interpreter/CodeValidator.d.ts +57 -0
  42. package/dist/interpreter/CodeValidator.d.ts.map +1 -0
  43. package/dist/interpreter/CodeValidator.js +283 -0
  44. package/dist/interpreter/CodeValidator.js.map +1 -0
  45. package/dist/interpreter/ExecutionEngine.d.ts +73 -0
  46. package/dist/interpreter/ExecutionEngine.d.ts.map +1 -0
  47. package/dist/interpreter/ExecutionEngine.js +273 -0
  48. package/dist/interpreter/ExecutionEngine.js.map +1 -0
  49. package/dist/interpreter/ResultFormatter.d.ts +72 -0
  50. package/dist/interpreter/ResultFormatter.d.ts.map +1 -0
  51. package/dist/interpreter/ResultFormatter.js +187 -0
  52. package/dist/interpreter/ResultFormatter.js.map +1 -0
  53. package/dist/interpreter/SandboxManager.d.ts +111 -0
  54. package/dist/interpreter/SandboxManager.d.ts.map +1 -0
  55. package/dist/interpreter/SandboxManager.js +215 -0
  56. package/dist/interpreter/SandboxManager.js.map +1 -0
  57. package/dist/interpreter/SessionManager.d.ts +101 -0
  58. package/dist/interpreter/SessionManager.d.ts.map +1 -0
  59. package/dist/interpreter/SessionManager.js +184 -0
  60. package/dist/interpreter/SessionManager.js.map +1 -0
  61. package/dist/interpreter/index.d.ts +13 -0
  62. package/dist/interpreter/index.d.ts.map +1 -0
  63. package/dist/interpreter/index.js +13 -0
  64. package/dist/interpreter/index.js.map +1 -0
  65. package/dist/interpreter/types.d.ts +311 -0
  66. package/dist/interpreter/types.d.ts.map +1 -0
  67. package/dist/interpreter/types.js +91 -0
  68. package/dist/interpreter/types.js.map +1 -0
  69. package/dist/moa/AgentOrchestrator.d.ts +53 -0
  70. package/dist/moa/AgentOrchestrator.d.ts.map +1 -0
  71. package/dist/moa/AgentOrchestrator.js +164 -0
  72. package/dist/moa/AgentOrchestrator.js.map +1 -0
  73. package/dist/moa/ConsensusCalculator.d.ts +76 -0
  74. package/dist/moa/ConsensusCalculator.d.ts.map +1 -0
  75. package/dist/moa/ConsensusCalculator.js +221 -0
  76. package/dist/moa/ConsensusCalculator.js.map +1 -0
  77. package/dist/moa/MoAEngine.d.ts +97 -0
  78. package/dist/moa/MoAEngine.d.ts.map +1 -0
  79. package/dist/moa/MoAEngine.js +303 -0
  80. package/dist/moa/MoAEngine.js.map +1 -0
  81. package/dist/moa/ResponseAggregator.d.ts +65 -0
  82. package/dist/moa/ResponseAggregator.d.ts.map +1 -0
  83. package/dist/moa/ResponseAggregator.js +274 -0
  84. package/dist/moa/ResponseAggregator.js.map +1 -0
  85. package/dist/moa/TaskAnalyzer.d.ts +30 -0
  86. package/dist/moa/TaskAnalyzer.d.ts.map +1 -0
  87. package/dist/moa/TaskAnalyzer.js +116 -0
  88. package/dist/moa/TaskAnalyzer.js.map +1 -0
  89. package/dist/moa/index.d.ts +19 -0
  90. package/dist/moa/index.d.ts.map +1 -0
  91. package/dist/moa/index.js +18 -0
  92. package/dist/moa/index.js.map +1 -0
  93. package/dist/moa/types.d.ts +261 -0
  94. package/dist/moa/types.d.ts.map +1 -0
  95. package/dist/moa/types.js +70 -0
  96. package/dist/moa/types.js.map +1 -0
  97. package/dist/research/ConvergenceDetector.d.ts +37 -0
  98. package/dist/research/ConvergenceDetector.d.ts.map +1 -0
  99. package/dist/research/ConvergenceDetector.js +62 -0
  100. package/dist/research/ConvergenceDetector.js.map +1 -0
  101. package/dist/research/DeepResearchOrchestrator.d.ts +63 -0
  102. package/dist/research/DeepResearchOrchestrator.d.ts.map +1 -0
  103. package/dist/research/DeepResearchOrchestrator.js +283 -0
  104. package/dist/research/DeepResearchOrchestrator.js.map +1 -0
  105. package/dist/research/FindingIntegrator.d.ts +42 -0
  106. package/dist/research/FindingIntegrator.d.ts.map +1 -0
  107. package/dist/research/FindingIntegrator.js +239 -0
  108. package/dist/research/FindingIntegrator.js.map +1 -0
  109. package/dist/research/GapAnalyzer.d.ts +41 -0
  110. package/dist/research/GapAnalyzer.d.ts.map +1 -0
  111. package/dist/research/GapAnalyzer.js +145 -0
  112. package/dist/research/GapAnalyzer.js.map +1 -0
  113. package/dist/research/QueryGenerator.d.ts +38 -0
  114. package/dist/research/QueryGenerator.d.ts.map +1 -0
  115. package/dist/research/QueryGenerator.js +79 -0
  116. package/dist/research/QueryGenerator.js.map +1 -0
  117. package/dist/research/index.d.ts +14 -0
  118. package/dist/research/index.d.ts.map +1 -0
  119. package/dist/research/index.js +13 -0
  120. package/dist/research/index.js.map +1 -0
  121. package/dist/research/types.d.ts +215 -0
  122. package/dist/research/types.d.ts.map +1 -0
  123. package/dist/research/types.js +18 -0
  124. package/dist/research/types.js.map +1 -0
  125. package/dist/trend/ForecastEngine.d.ts +65 -0
  126. package/dist/trend/ForecastEngine.d.ts.map +1 -0
  127. package/dist/trend/ForecastEngine.js +260 -0
  128. package/dist/trend/ForecastEngine.js.map +1 -0
  129. package/dist/trend/TimeSeriesCollector.d.ts +42 -0
  130. package/dist/trend/TimeSeriesCollector.d.ts.map +1 -0
  131. package/dist/trend/TimeSeriesCollector.js +172 -0
  132. package/dist/trend/TimeSeriesCollector.js.map +1 -0
  133. package/dist/trend/TrendAnalyzer.d.ts +72 -0
  134. package/dist/trend/TrendAnalyzer.d.ts.map +1 -0
  135. package/dist/trend/TrendAnalyzer.js +291 -0
  136. package/dist/trend/TrendAnalyzer.js.map +1 -0
  137. package/dist/trend/TrendDetector.d.ts +67 -0
  138. package/dist/trend/TrendDetector.d.ts.map +1 -0
  139. package/dist/trend/TrendDetector.js +325 -0
  140. package/dist/trend/TrendDetector.js.map +1 -0
  141. package/dist/trend/VisualizationGenerator.d.ts +75 -0
  142. package/dist/trend/VisualizationGenerator.d.ts.map +1 -0
  143. package/dist/trend/VisualizationGenerator.js +294 -0
  144. package/dist/trend/VisualizationGenerator.js.map +1 -0
  145. package/dist/trend/index.d.ts +16 -0
  146. package/dist/trend/index.d.ts.map +1 -0
  147. package/dist/trend/index.js +18 -0
  148. package/dist/trend/index.js.map +1 -0
  149. package/dist/trend/types.d.ts +279 -0
  150. package/dist/trend/types.d.ts.map +1 -0
  151. package/dist/trend/types.js +17 -0
  152. package/dist/trend/types.js.map +1 -0
  153. package/package.json +4 -2
@@ -0,0 +1,303 @@
1
+ /**
2
+ * MoAEngine - Mixture of Agents エンジン
3
+ *
4
+ * 複数のAIエージェントを協調動作させ、
5
+ * 多角的な視点からの分析・回答を生成する
6
+ *
7
+ * @requirement REQ-ANALYZE-011
8
+ * @design DES-ANALYZE-011-MoAEngine
9
+ */
10
+ import { AGENT_PRESETS, DEFAULT_MOA_CONFIG } from './types.js';
11
+ import { TaskAnalyzer } from './TaskAnalyzer.js';
12
+ import { AgentOrchestrator } from './AgentOrchestrator.js';
13
+ import { ResponseAggregator } from './ResponseAggregator.js';
14
+ import { ConsensusCalculator } from './ConsensusCalculator.js';
15
+ /**
16
+ * Mixture of Agents エンジン
17
+ */
18
+ export class MoAEngine {
19
+ config;
20
+ taskAnalyzer;
21
+ orchestrator;
22
+ aggregator;
23
+ consensusCalculator;
24
+ /** エージェントプリセット */
25
+ static presets = AGENT_PRESETS;
26
+ constructor(options = {}) {
27
+ this.config = { ...DEFAULT_MOA_CONFIG, ...options.config };
28
+ this.taskAnalyzer = new TaskAnalyzer();
29
+ this.orchestrator = new AgentOrchestrator(options.llmProvider);
30
+ this.aggregator = new ResponseAggregator();
31
+ this.consensusCalculator = new ConsensusCalculator();
32
+ }
33
+ /**
34
+ * MoA処理を実行
35
+ *
36
+ * @param request MoAリクエスト
37
+ * @returns MoA結果
38
+ */
39
+ async process(request) {
40
+ const startTime = Date.now();
41
+ const requestConfig = { ...this.config, ...request.config };
42
+ // タスク分析
43
+ const taskAnalysis = this.taskAnalyzer.analyze(request.task);
44
+ // エージェント選択
45
+ const agents = this.selectAgents(request.agents, taskAnalysis.recommendedAgents);
46
+ // マルチラウンド処理
47
+ const rounds = [];
48
+ let allResponses = [];
49
+ let finalConsensus = 0;
50
+ for (let round = 1; round <= requestConfig.maxRounds; round++) {
51
+ // ラウンドコンテキストを構築
52
+ const roundContext = this.buildRoundContext(request.task, request.context, rounds);
53
+ // エージェント実行
54
+ const responses = await this.orchestrator.execute(agents, roundContext);
55
+ allResponses = responses;
56
+ // 合意度を計算
57
+ const consensus = this.consensusCalculator.calculate(responses);
58
+ finalConsensus = consensus;
59
+ // ラウンド結果を記録
60
+ rounds.push({
61
+ roundNumber: round,
62
+ responses,
63
+ consensus,
64
+ improvements: round > 1 ? this.identifyImprovements(rounds) : [],
65
+ });
66
+ // 早期終了条件のチェック
67
+ if (requestConfig.earlyTermination && consensus >= requestConfig.consensusThreshold) {
68
+ break;
69
+ }
70
+ }
71
+ // レスポンス集約
72
+ const strategy = request.strategy || requestConfig.defaultStrategy;
73
+ const aggregationResult = await this.aggregator.aggregate(allResponses, strategy, request.task);
74
+ // メタデータを構築
75
+ const metadata = this.buildMetadata(startTime, agents, rounds, finalConsensus, strategy, aggregationResult.details);
76
+ return {
77
+ response: aggregationResult.response,
78
+ confidence: this.calculateConfidence(agents.length, finalConsensus, aggregationResult.details),
79
+ consensus: finalConsensus,
80
+ agentResponses: allResponses,
81
+ metadata,
82
+ };
83
+ }
84
+ /**
85
+ * 単純投票モードで処理
86
+ *
87
+ * @param request MoAリクエスト
88
+ * @returns MoA結果
89
+ */
90
+ async vote(request) {
91
+ return this.process({
92
+ ...request,
93
+ strategy: 'majority_vote',
94
+ config: { ...request.config, maxRounds: 1 },
95
+ });
96
+ }
97
+ /**
98
+ * ディベートモードで処理
99
+ *
100
+ * @param request MoAリクエスト
101
+ * @param maxRounds 最大ラウンド数
102
+ * @returns MoA結果
103
+ */
104
+ async debate(request, maxRounds = 3) {
105
+ return this.process({
106
+ ...request,
107
+ strategy: 'debate',
108
+ config: { ...request.config, maxRounds },
109
+ });
110
+ }
111
+ /**
112
+ * エージェントを選択
113
+ */
114
+ selectAgents(requestedAgents, recommendedTypes) {
115
+ if (requestedAgents && requestedAgents.length > 0) {
116
+ return requestedAgents;
117
+ }
118
+ // 推奨タイプからエージェントを選択
119
+ const agents = [];
120
+ const usedTypes = new Set();
121
+ for (const type of recommendedTypes) {
122
+ if (usedTypes.has(type))
123
+ continue;
124
+ const preset = AGENT_PRESETS[type];
125
+ if (preset) {
126
+ agents.push(preset);
127
+ usedTypes.add(type);
128
+ }
129
+ }
130
+ // 最低3エージェントを確保
131
+ if (agents.length < 3) {
132
+ const defaultTypes = ['analytical', 'creative', 'critical'];
133
+ for (const type of defaultTypes) {
134
+ if (!usedTypes.has(type)) {
135
+ const preset = AGENT_PRESETS[type];
136
+ if (preset) {
137
+ agents.push(preset);
138
+ usedTypes.add(type);
139
+ }
140
+ }
141
+ if (agents.length >= 3)
142
+ break;
143
+ }
144
+ }
145
+ return agents;
146
+ }
147
+ /**
148
+ * ラウンドコンテキストを構築
149
+ */
150
+ buildRoundContext(task, context, previousRounds) {
151
+ let roundContext = task;
152
+ if (context) {
153
+ roundContext = `Context: ${context}\n\nTask: ${task}`;
154
+ }
155
+ if (previousRounds.length > 0) {
156
+ const lastRound = previousRounds[previousRounds.length - 1];
157
+ const summaries = lastRound.responses
158
+ .map(r => `[${r.agentName}]: ${r.response.substring(0, 200)}...`)
159
+ .join('\n');
160
+ roundContext += `\n\n--- Previous Round Perspectives ---\n${summaries}\n\nPlease consider these perspectives and provide an improved response.`;
161
+ }
162
+ return roundContext;
163
+ }
164
+ /**
165
+ * 改善点を特定
166
+ */
167
+ identifyImprovements(rounds) {
168
+ if (rounds.length < 2)
169
+ return [];
170
+ const current = rounds[rounds.length - 1];
171
+ const previous = rounds[rounds.length - 2];
172
+ const improvements = [];
173
+ // 合意度の変化
174
+ const consensusChange = current.consensus - previous.consensus;
175
+ if (consensusChange > 0.1) {
176
+ improvements.push(`Consensus improved by ${(consensusChange * 100).toFixed(1)}%`);
177
+ }
178
+ // 新しい視点の追加
179
+ const currentKeywords = this.extractAllKeywords(current.responses);
180
+ const previousKeywords = this.extractAllKeywords(previous.responses);
181
+ const newKeywords = [...currentKeywords].filter(k => !previousKeywords.has(k));
182
+ if (newKeywords.length > 0) {
183
+ improvements.push(`New perspectives added: ${newKeywords.slice(0, 3).join(', ')}`);
184
+ }
185
+ return improvements;
186
+ }
187
+ /**
188
+ * 全レスポンスからキーワードを抽出
189
+ */
190
+ extractAllKeywords(responses) {
191
+ const keywords = new Set();
192
+ for (const response of responses) {
193
+ const words = response.response.toLowerCase()
194
+ .replace(/[^\w\s]/g, ' ')
195
+ .split(/\s+/)
196
+ .filter(w => w.length > 4);
197
+ words.forEach(w => keywords.add(w));
198
+ }
199
+ return keywords;
200
+ }
201
+ /**
202
+ * メタデータを構築
203
+ */
204
+ buildMetadata(startTime, agents, rounds, _consensus, strategy, aggregationDetails) {
205
+ const totalTokens = rounds.reduce((sum, round) => {
206
+ return sum + round.responses.reduce((rSum, r) => {
207
+ return rSum + (r.tokenUsage?.total || 0);
208
+ }, 0);
209
+ }, 0);
210
+ return {
211
+ totalRounds: rounds.length,
212
+ totalAgents: agents.length,
213
+ aggregationStrategy: strategy,
214
+ consensusHistory: rounds.map(r => r.consensus),
215
+ tokenUsage: {
216
+ prompt: Math.floor(totalTokens * 0.3),
217
+ completion: Math.floor(totalTokens * 0.7),
218
+ total: totalTokens,
219
+ },
220
+ processingTime: Date.now() - startTime,
221
+ aggregationDetails: aggregationDetails || {
222
+ strategy,
223
+ participatingAgents: agents.map(a => a.name),
224
+ contributions: this.calculateContributions(rounds),
225
+ },
226
+ };
227
+ }
228
+ /**
229
+ * 貢献度を計算
230
+ */
231
+ calculateContributions(rounds) {
232
+ const contributionMap = new Map();
233
+ for (const round of rounds) {
234
+ for (const response of round.responses) {
235
+ const existing = contributionMap.get(response.agentName) || {
236
+ influence: 0,
237
+ keyPoints: [],
238
+ };
239
+ // 影響度を加算(selfScoreを使用)
240
+ existing.influence += response.selfScore || 0.5;
241
+ // キーポイントを抽出
242
+ const sentences = response.response.split(/[.!?]+/).filter((s) => s.trim().length > 20);
243
+ if (sentences.length > 0) {
244
+ existing.keyPoints.push(sentences[0].trim());
245
+ }
246
+ contributionMap.set(response.agentName, existing);
247
+ }
248
+ }
249
+ // 正規化
250
+ const maxInfluence = Math.max(...[...contributionMap.values()].map(v => v.influence));
251
+ return [...contributionMap.entries()].map(([agentId, data]) => ({
252
+ agentId,
253
+ influence: maxInfluence > 0 ? data.influence / maxInfluence : 0,
254
+ keyPoints: [...new Set(data.keyPoints)].slice(0, 3),
255
+ }));
256
+ }
257
+ /**
258
+ * 信頼度を計算
259
+ */
260
+ calculateConfidence(agentCount, consensus, details) {
261
+ // ベース信頼度
262
+ let confidence = 0.5;
263
+ // エージェント数による調整(3以上で加点)
264
+ if (agentCount >= 3) {
265
+ confidence += 0.1;
266
+ }
267
+ if (agentCount >= 5) {
268
+ confidence += 0.1;
269
+ }
270
+ // 合意度による調整
271
+ confidence += consensus * 0.2;
272
+ // 貢献の均等さによる調整
273
+ if (details?.contributions && details.contributions.length > 1) {
274
+ const influences = details.contributions.map(c => c.influence);
275
+ const avgInfluence = influences.reduce((s, i) => s + i, 0) / influences.length;
276
+ const variance = influences.reduce((s, i) => s + Math.pow(i - avgInfluence, 2), 0) / influences.length;
277
+ const uniformity = Math.max(0, 1 - variance * 2);
278
+ confidence += uniformity * 0.1;
279
+ }
280
+ return Math.min(1, Math.max(0, confidence));
281
+ }
282
+ /**
283
+ * 合意分析を実行
284
+ */
285
+ analyzeConsensus(responses) {
286
+ return this.consensusCalculator.analyzeConsensus(responses);
287
+ }
288
+ /**
289
+ * 設定を更新
290
+ */
291
+ updateConfig(config) {
292
+ this.config = { ...this.config, ...config };
293
+ }
294
+ /**
295
+ * 現在の設定を取得
296
+ */
297
+ getConfig() {
298
+ return { ...this.config };
299
+ }
300
+ }
301
+ // デフォルトエクスポート
302
+ export default MoAEngine;
303
+ //# sourceMappingURL=MoAEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MoAEngine.js","sourceRoot":"","sources":["../../src/moa/MoAEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * ResponseAggregator - エージェントレスポンスの統合
3
+ *
4
+ * @requirement REQ-ANALYZE-011
5
+ * @design DES-ANALYZE-011-MoAEngine
6
+ */
7
+ import type { AgentResponse, AggregationStrategy, AggregationResult } from './types.js';
8
+ /**
9
+ * 複数のエージェントレスポンスを統合
10
+ */
11
+ export declare class ResponseAggregator {
12
+ /**
13
+ * レスポンスを統合
14
+ */
15
+ aggregate(responses: AgentResponse[], strategy: AggregationStrategy, task: string): Promise<AggregationResult>;
16
+ /**
17
+ * 多数決方式
18
+ */
19
+ private majorityVote;
20
+ /**
21
+ * 重み付き平均方式
22
+ */
23
+ private weightedAverage;
24
+ /**
25
+ * Best of N 方式
26
+ */
27
+ private bestOfN;
28
+ /**
29
+ * 統合方式
30
+ */
31
+ private synthesize;
32
+ /**
33
+ * 討論方式
34
+ */
35
+ private debate;
36
+ /**
37
+ * 階層的統合方式
38
+ */
39
+ private hierarchical;
40
+ /**
41
+ * 類似度を計算
42
+ */
43
+ private calculateSimilarity;
44
+ /**
45
+ * 重み付きスコアを計算
46
+ */
47
+ private calculateWeightedScore;
48
+ /**
49
+ * レスポンスをスコアリング
50
+ */
51
+ private scoreResponse;
52
+ /**
53
+ * ポイントの重複を除去
54
+ */
55
+ private deduplicatePoints;
56
+ /**
57
+ * 統合レスポンスを構築
58
+ */
59
+ private buildSynthesizedResponse;
60
+ /**
61
+ * 共通ポイントを見つける
62
+ */
63
+ private findCommonPoints;
64
+ }
65
+ //# sourceMappingURL=ResponseAggregator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponseAggregator.d.ts","sourceRoot":"","sources":["../../src/moa/ResponseAggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACG,SAAS,CACb,SAAS,EAAE,aAAa,EAAE,EAC1B,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iBAAiB,CAAC;IAmB7B;;OAEG;IACH,OAAO,CAAC,YAAY;IA4BpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,OAAO;IAef;;OAEG;IACH,OAAO,CAAC,UAAU;IAqBlB;;OAEG;IACH,OAAO,CAAC,MAAM;IAkCd;;OAEG;IACH,OAAO,CAAC,YAAY;IA8BpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAa9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAsBrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA2BhC;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAkCzB"}
@@ -0,0 +1,274 @@
1
+ /**
2
+ * ResponseAggregator - エージェントレスポンスの統合
3
+ *
4
+ * @requirement REQ-ANALYZE-011
5
+ * @design DES-ANALYZE-011-MoAEngine
6
+ */
7
+ /**
8
+ * 複数のエージェントレスポンスを統合
9
+ */
10
+ export class ResponseAggregator {
11
+ /**
12
+ * レスポンスを統合
13
+ */
14
+ async aggregate(responses, strategy, task) {
15
+ switch (strategy) {
16
+ case 'majority_vote':
17
+ return this.majorityVote(responses);
18
+ case 'weighted_average':
19
+ return this.weightedAverage(responses);
20
+ case 'best_of_n':
21
+ return this.bestOfN(responses);
22
+ case 'synthesis':
23
+ return this.synthesize(responses, task);
24
+ case 'debate':
25
+ return this.debate(responses, task);
26
+ case 'hierarchical':
27
+ return this.hierarchical(responses, task);
28
+ default:
29
+ return this.synthesize(responses, task);
30
+ }
31
+ }
32
+ /**
33
+ * 多数決方式
34
+ */
35
+ majorityVote(responses) {
36
+ // 最も多く選ばれた回答を返す(類似度ベース)
37
+ const votes = new Map();
38
+ for (let i = 0; i < responses.length; i++) {
39
+ votes.set(i, 0);
40
+ for (let j = 0; j < responses.length; j++) {
41
+ if (i !== j) {
42
+ const similarity = this.calculateSimilarity(responses[i].response, responses[j].response);
43
+ if (similarity > 0.5) {
44
+ votes.set(i, (votes.get(i) || 0) + 1);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ const entries = [...votes.entries()].sort((a, b) => b[1] - a[1]);
50
+ const winnerIndex = entries[0]?.[0] ?? 0;
51
+ return {
52
+ response: responses[winnerIndex].response,
53
+ selectedResponses: [responses[winnerIndex]],
54
+ };
55
+ }
56
+ /**
57
+ * 重み付き平均方式
58
+ */
59
+ weightedAverage(responses) {
60
+ // 自己評価とピア評価で重み付けして最良を選択
61
+ const scored = responses
62
+ .map(r => ({
63
+ response: r,
64
+ score: this.calculateWeightedScore(r),
65
+ }))
66
+ .sort((a, b) => b.score - a.score);
67
+ return {
68
+ response: scored[0].response.response,
69
+ selectedResponses: [scored[0].response],
70
+ };
71
+ }
72
+ /**
73
+ * Best of N 方式
74
+ */
75
+ bestOfN(responses) {
76
+ // 最高スコアの回答を選択
77
+ const scored = responses
78
+ .map(r => ({
79
+ response: r,
80
+ score: this.scoreResponse(r),
81
+ }))
82
+ .sort((a, b) => b.score - a.score);
83
+ return {
84
+ response: scored[0].response.response,
85
+ selectedResponses: [scored[0].response],
86
+ };
87
+ }
88
+ /**
89
+ * 統合方式
90
+ */
91
+ synthesize(responses, _task) {
92
+ // 全ての回答からキーポイントを抽出して統合
93
+ const allPoints = responses.flatMap(r => r.response.split(/[.!?]+/).filter(s => s.trim().length > 20));
94
+ // 重複を除去してキーポイントを抽出
95
+ const uniquePoints = this.deduplicatePoints(allPoints).slice(0, 10);
96
+ // 統合された回答を構築
97
+ const synthesized = this.buildSynthesizedResponse(responses, uniquePoints);
98
+ return {
99
+ response: synthesized,
100
+ selectedResponses: responses,
101
+ };
102
+ }
103
+ /**
104
+ * 討論方式
105
+ */
106
+ debate(responses, _task) {
107
+ // 討論形式で最終回答を導出
108
+ const positions = responses.map(r => ({
109
+ agent: r.agentName,
110
+ position: r.response.slice(0, 300),
111
+ }));
112
+ // 各エージェントの立場をまとめる
113
+ let debateSummary = `After considering ${responses.length} different perspectives:\n\n`;
114
+ positions.forEach((p, i) => {
115
+ debateSummary += `**${p.agent}**: ${p.position}${p.position.length >= 300 ? '...' : ''}\n\n`;
116
+ if (i < positions.length - 1) {
117
+ debateSummary += '---\n\n';
118
+ }
119
+ });
120
+ // 結論を追加
121
+ const commonPoints = this.findCommonPoints(responses);
122
+ debateSummary += `**Conclusion**: `;
123
+ if (commonPoints.length > 0) {
124
+ debateSummary += `The agents agree on several key points: ${commonPoints.slice(0, 3).join('; ')}. `;
125
+ }
126
+ debateSummary += `Considering all perspectives, a balanced view incorporates insights from each approach while acknowledging their limitations.`;
127
+ return {
128
+ response: debateSummary,
129
+ selectedResponses: responses,
130
+ };
131
+ }
132
+ /**
133
+ * 階層的統合方式
134
+ */
135
+ hierarchical(responses, task) {
136
+ if (responses.length <= 2) {
137
+ return this.synthesize(responses, task);
138
+ }
139
+ // ペアワイズ統合
140
+ const pairs = [];
141
+ for (let i = 0; i < responses.length; i += 2) {
142
+ const pair = responses.slice(i, Math.min(i + 2, responses.length));
143
+ pairs.push(pair);
144
+ }
145
+ // 各ペアを統合
146
+ const intermediateResponses = pairs.map((pair, index) => {
147
+ const pairSynthesis = this.synthesize(pair, task);
148
+ return {
149
+ agentId: `intermediate-${index}`,
150
+ agentName: `Intermediate Synthesis ${index + 1}`,
151
+ response: pairSynthesis.response,
152
+ processingTime: 0,
153
+ };
154
+ });
155
+ // 中間結果を最終統合
156
+ return this.synthesize(intermediateResponses, task);
157
+ }
158
+ /**
159
+ * 類似度を計算
160
+ */
161
+ calculateSimilarity(text1, text2) {
162
+ const words1 = new Set(text1.toLowerCase().split(/\s+/).filter(w => w.length > 3));
163
+ const words2 = new Set(text2.toLowerCase().split(/\s+/).filter(w => w.length > 3));
164
+ let intersection = 0;
165
+ words1.forEach(w => {
166
+ if (words2.has(w))
167
+ intersection++;
168
+ });
169
+ const union = words1.size + words2.size - intersection;
170
+ return union > 0 ? intersection / union : 0;
171
+ }
172
+ /**
173
+ * 重み付きスコアを計算
174
+ */
175
+ calculateWeightedScore(response) {
176
+ let score = response.selfScore || 0.5;
177
+ // ピア評価の平均
178
+ if (response.peerScores && response.peerScores.length > 0) {
179
+ const avgPeer = response.peerScores.reduce((sum, p) => sum + p.score, 0)
180
+ / response.peerScores.length;
181
+ score = score * 0.6 + avgPeer * 0.4;
182
+ }
183
+ return score;
184
+ }
185
+ /**
186
+ * レスポンスをスコアリング
187
+ */
188
+ scoreResponse(response) {
189
+ let score = 0.5;
190
+ // 自己評価スコア
191
+ if (response.selfScore) {
192
+ score += response.selfScore * 0.3;
193
+ }
194
+ // ピア評価の平均
195
+ if (response.peerScores && response.peerScores.length > 0) {
196
+ const avgPeer = response.peerScores.reduce((sum, p) => sum + p.score, 0)
197
+ / response.peerScores.length;
198
+ score += avgPeer * 0.2;
199
+ }
200
+ // 回答の長さ(適度な長さを評価)
201
+ const lengthScore = Math.min(response.response.length / 1000, 1) * 0.1;
202
+ score += lengthScore;
203
+ return Math.min(score, 1);
204
+ }
205
+ /**
206
+ * ポイントの重複を除去
207
+ */
208
+ deduplicatePoints(points) {
209
+ const unique = [];
210
+ for (const point of points) {
211
+ const trimmed = point.trim();
212
+ if (trimmed.length < 20)
213
+ continue;
214
+ // 既存のポイントと類似していないか確認
215
+ const isDuplicate = unique.some(u => this.calculateSimilarity(u, trimmed) > 0.6);
216
+ if (!isDuplicate) {
217
+ unique.push(trimmed);
218
+ }
219
+ }
220
+ return unique;
221
+ }
222
+ /**
223
+ * 統合レスポンスを構築
224
+ */
225
+ buildSynthesizedResponse(responses, keyPoints) {
226
+ let synthesized = 'Based on multiple perspectives:\n\n';
227
+ // キーポイントを箇条書きで追加
228
+ keyPoints.forEach(point => {
229
+ synthesized += `• ${point.trim()}\n`;
230
+ });
231
+ synthesized += '\n';
232
+ // サマリーを追加
233
+ synthesized += '**Summary**: ';
234
+ if (keyPoints.length > 0) {
235
+ const topPoints = keyPoints.slice(0, 3).map(p => p.trim().slice(0, 60));
236
+ synthesized += `The key aspects include: ${topPoints.join('; ')}. `;
237
+ }
238
+ // 貢献したエージェントを記載
239
+ const agentNames = responses.map(r => r.agentName).join(', ');
240
+ synthesized += `This synthesis incorporates insights from: ${agentNames}.`;
241
+ return synthesized;
242
+ }
243
+ /**
244
+ * 共通ポイントを見つける
245
+ */
246
+ findCommonPoints(responses) {
247
+ if (responses.length < 2)
248
+ return [];
249
+ const allSentences = responses.map(r => r.response.split(/[.!?]+/).map(s => s.trim().toLowerCase()).filter(s => s.length > 20));
250
+ const commonPoints = [];
251
+ // 最初のレスポンスの文を基準に共通点を探す
252
+ for (const sentence of allSentences[0] || []) {
253
+ const keywords = sentence.split(/\s+/).filter(w => w.length > 4);
254
+ // 他のレスポンスにも類似の内容があるか確認
255
+ let matchCount = 0;
256
+ for (let i = 1; i < allSentences.length; i++) {
257
+ const otherSentences = allSentences[i] || [];
258
+ for (const other of otherSentences) {
259
+ const matchingKeywords = keywords.filter(k => other.includes(k));
260
+ if (matchingKeywords.length >= 2) {
261
+ matchCount++;
262
+ break;
263
+ }
264
+ }
265
+ }
266
+ // 半数以上のエージェントで共通していれば追加
267
+ if (matchCount >= responses.length / 2) {
268
+ commonPoints.push(sentence);
269
+ }
270
+ }
271
+ return commonPoints.slice(0, 5);
272
+ }
273
+ }
274
+ //# sourceMappingURL=ResponseAggregator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponseAggregator.js","sourceRoot":"","sources":["../../src/moa/ResponseAggregator.ts"],"names":[],"mappings":"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"}