@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.
- package/dist/factcheck/ClaimParser.d.ts +41 -0
- package/dist/factcheck/ClaimParser.d.ts.map +1 -0
- package/dist/factcheck/ClaimParser.js +149 -0
- package/dist/factcheck/ClaimParser.js.map +1 -0
- package/dist/factcheck/ConsistencyChecker.d.ts +56 -0
- package/dist/factcheck/ConsistencyChecker.d.ts.map +1 -0
- package/dist/factcheck/ConsistencyChecker.js +184 -0
- package/dist/factcheck/ConsistencyChecker.js.map +1 -0
- package/dist/factcheck/EvidenceCollector.d.ts +89 -0
- package/dist/factcheck/EvidenceCollector.d.ts.map +1 -0
- package/dist/factcheck/EvidenceCollector.js +222 -0
- package/dist/factcheck/EvidenceCollector.js.map +1 -0
- package/dist/factcheck/FactChecker.d.ts +81 -0
- package/dist/factcheck/FactChecker.d.ts.map +1 -0
- package/dist/factcheck/FactChecker.js +302 -0
- package/dist/factcheck/FactChecker.js.map +1 -0
- package/dist/factcheck/TrustedSourceRegistry.d.ts +47 -0
- package/dist/factcheck/TrustedSourceRegistry.d.ts.map +1 -0
- package/dist/factcheck/TrustedSourceRegistry.js +208 -0
- package/dist/factcheck/TrustedSourceRegistry.js.map +1 -0
- package/dist/factcheck/VerdictGenerator.d.ts +36 -0
- package/dist/factcheck/VerdictGenerator.d.ts.map +1 -0
- package/dist/factcheck/VerdictGenerator.js +154 -0
- package/dist/factcheck/VerdictGenerator.js.map +1 -0
- package/dist/factcheck/index.d.ts +15 -0
- package/dist/factcheck/index.d.ts.map +1 -0
- package/dist/factcheck/index.js +14 -0
- package/dist/factcheck/index.js.map +1 -0
- package/dist/factcheck/types.d.ts +265 -0
- package/dist/factcheck/types.d.ts.map +1 -0
- package/dist/factcheck/types.js +18 -0
- package/dist/factcheck/types.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/interpreter/CodeInterpreter.d.ts +119 -0
- package/dist/interpreter/CodeInterpreter.d.ts.map +1 -0
- package/dist/interpreter/CodeInterpreter.js +241 -0
- package/dist/interpreter/CodeInterpreter.js.map +1 -0
- package/dist/interpreter/CodeValidator.d.ts +57 -0
- package/dist/interpreter/CodeValidator.d.ts.map +1 -0
- package/dist/interpreter/CodeValidator.js +283 -0
- package/dist/interpreter/CodeValidator.js.map +1 -0
- package/dist/interpreter/ExecutionEngine.d.ts +73 -0
- package/dist/interpreter/ExecutionEngine.d.ts.map +1 -0
- package/dist/interpreter/ExecutionEngine.js +273 -0
- package/dist/interpreter/ExecutionEngine.js.map +1 -0
- package/dist/interpreter/ResultFormatter.d.ts +72 -0
- package/dist/interpreter/ResultFormatter.d.ts.map +1 -0
- package/dist/interpreter/ResultFormatter.js +187 -0
- package/dist/interpreter/ResultFormatter.js.map +1 -0
- package/dist/interpreter/SandboxManager.d.ts +111 -0
- package/dist/interpreter/SandboxManager.d.ts.map +1 -0
- package/dist/interpreter/SandboxManager.js +215 -0
- package/dist/interpreter/SandboxManager.js.map +1 -0
- package/dist/interpreter/SessionManager.d.ts +101 -0
- package/dist/interpreter/SessionManager.d.ts.map +1 -0
- package/dist/interpreter/SessionManager.js +184 -0
- package/dist/interpreter/SessionManager.js.map +1 -0
- package/dist/interpreter/index.d.ts +13 -0
- package/dist/interpreter/index.d.ts.map +1 -0
- package/dist/interpreter/index.js +13 -0
- package/dist/interpreter/index.js.map +1 -0
- package/dist/interpreter/types.d.ts +311 -0
- package/dist/interpreter/types.d.ts.map +1 -0
- package/dist/interpreter/types.js +91 -0
- package/dist/interpreter/types.js.map +1 -0
- package/dist/moa/AgentOrchestrator.d.ts +53 -0
- package/dist/moa/AgentOrchestrator.d.ts.map +1 -0
- package/dist/moa/AgentOrchestrator.js +164 -0
- package/dist/moa/AgentOrchestrator.js.map +1 -0
- package/dist/moa/ConsensusCalculator.d.ts +76 -0
- package/dist/moa/ConsensusCalculator.d.ts.map +1 -0
- package/dist/moa/ConsensusCalculator.js +221 -0
- package/dist/moa/ConsensusCalculator.js.map +1 -0
- package/dist/moa/MoAEngine.d.ts +97 -0
- package/dist/moa/MoAEngine.d.ts.map +1 -0
- package/dist/moa/MoAEngine.js +303 -0
- package/dist/moa/MoAEngine.js.map +1 -0
- package/dist/moa/ResponseAggregator.d.ts +65 -0
- package/dist/moa/ResponseAggregator.d.ts.map +1 -0
- package/dist/moa/ResponseAggregator.js +274 -0
- package/dist/moa/ResponseAggregator.js.map +1 -0
- package/dist/moa/TaskAnalyzer.d.ts +30 -0
- package/dist/moa/TaskAnalyzer.d.ts.map +1 -0
- package/dist/moa/TaskAnalyzer.js +116 -0
- package/dist/moa/TaskAnalyzer.js.map +1 -0
- package/dist/moa/index.d.ts +19 -0
- package/dist/moa/index.d.ts.map +1 -0
- package/dist/moa/index.js +18 -0
- package/dist/moa/index.js.map +1 -0
- package/dist/moa/types.d.ts +261 -0
- package/dist/moa/types.d.ts.map +1 -0
- package/dist/moa/types.js +70 -0
- package/dist/moa/types.js.map +1 -0
- package/dist/research/ConvergenceDetector.d.ts +37 -0
- package/dist/research/ConvergenceDetector.d.ts.map +1 -0
- package/dist/research/ConvergenceDetector.js +62 -0
- package/dist/research/ConvergenceDetector.js.map +1 -0
- package/dist/research/DeepResearchOrchestrator.d.ts +63 -0
- package/dist/research/DeepResearchOrchestrator.d.ts.map +1 -0
- package/dist/research/DeepResearchOrchestrator.js +283 -0
- package/dist/research/DeepResearchOrchestrator.js.map +1 -0
- package/dist/research/FindingIntegrator.d.ts +42 -0
- package/dist/research/FindingIntegrator.d.ts.map +1 -0
- package/dist/research/FindingIntegrator.js +239 -0
- package/dist/research/FindingIntegrator.js.map +1 -0
- package/dist/research/GapAnalyzer.d.ts +41 -0
- package/dist/research/GapAnalyzer.d.ts.map +1 -0
- package/dist/research/GapAnalyzer.js +145 -0
- package/dist/research/GapAnalyzer.js.map +1 -0
- package/dist/research/QueryGenerator.d.ts +38 -0
- package/dist/research/QueryGenerator.d.ts.map +1 -0
- package/dist/research/QueryGenerator.js +79 -0
- package/dist/research/QueryGenerator.js.map +1 -0
- package/dist/research/index.d.ts +14 -0
- package/dist/research/index.d.ts.map +1 -0
- package/dist/research/index.js +13 -0
- package/dist/research/index.js.map +1 -0
- package/dist/research/types.d.ts +215 -0
- package/dist/research/types.d.ts.map +1 -0
- package/dist/research/types.js +18 -0
- package/dist/research/types.js.map +1 -0
- package/dist/trend/ForecastEngine.d.ts +65 -0
- package/dist/trend/ForecastEngine.d.ts.map +1 -0
- package/dist/trend/ForecastEngine.js +260 -0
- package/dist/trend/ForecastEngine.js.map +1 -0
- package/dist/trend/TimeSeriesCollector.d.ts +42 -0
- package/dist/trend/TimeSeriesCollector.d.ts.map +1 -0
- package/dist/trend/TimeSeriesCollector.js +172 -0
- package/dist/trend/TimeSeriesCollector.js.map +1 -0
- package/dist/trend/TrendAnalyzer.d.ts +72 -0
- package/dist/trend/TrendAnalyzer.d.ts.map +1 -0
- package/dist/trend/TrendAnalyzer.js +291 -0
- package/dist/trend/TrendAnalyzer.js.map +1 -0
- package/dist/trend/TrendDetector.d.ts +67 -0
- package/dist/trend/TrendDetector.d.ts.map +1 -0
- package/dist/trend/TrendDetector.js +325 -0
- package/dist/trend/TrendDetector.js.map +1 -0
- package/dist/trend/VisualizationGenerator.d.ts +75 -0
- package/dist/trend/VisualizationGenerator.d.ts.map +1 -0
- package/dist/trend/VisualizationGenerator.js +294 -0
- package/dist/trend/VisualizationGenerator.js.map +1 -0
- package/dist/trend/index.d.ts +16 -0
- package/dist/trend/index.d.ts.map +1 -0
- package/dist/trend/index.js +18 -0
- package/dist/trend/index.js.map +1 -0
- package/dist/trend/types.d.ts +279 -0
- package/dist/trend/types.d.ts.map +1 -0
- package/dist/trend/types.js +17 -0
- package/dist/trend/types.js.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GapAnalyzer - 知識グラフのギャップを分析
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-ANALYZE-008
|
|
5
|
+
* @design DES-ANALYZE-008
|
|
6
|
+
* @task TASK-003
|
|
7
|
+
*/
|
|
8
|
+
import type { KnowledgeGap, SimpleKnowledgeGraph } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* 知識グラフのギャップを分析するクラス
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const analyzer = new GapAnalyzer();
|
|
15
|
+
*
|
|
16
|
+
* const gaps = await analyzer.analyze(graph, 'AI ethics', ['privacy', 'bias']);
|
|
17
|
+
* for (const gap of gaps) {
|
|
18
|
+
* console.log(`[${gap.priority}] ${gap.description}`);
|
|
19
|
+
* console.log(` Suggested queries: ${gap.suggestedQueries.join(', ')}`);
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare class GapAnalyzer {
|
|
24
|
+
/**
|
|
25
|
+
* 知識グラフのギャップを分析
|
|
26
|
+
*/
|
|
27
|
+
analyze(graph: SimpleKnowledgeGraph, topic: string, focusAreas?: string[]): Promise<KnowledgeGap[]>;
|
|
28
|
+
/**
|
|
29
|
+
* 孤立ノードを検出
|
|
30
|
+
*/
|
|
31
|
+
private findIsolatedNodes;
|
|
32
|
+
/**
|
|
33
|
+
* フォーカスエリアのカバレッジを評価
|
|
34
|
+
*/
|
|
35
|
+
private assessAreaCoverage;
|
|
36
|
+
/**
|
|
37
|
+
* 深掘りが必要なノードを検出
|
|
38
|
+
*/
|
|
39
|
+
private findNeedsDepth;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=GapAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GapAnalyzer.d.ts","sourceRoot":"","sources":["../../src/research/GapAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAErE;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACG,OAAO,CACX,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,YAAY,EAAE,CAAC;IAkF1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,cAAc;CAiBvB"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GapAnalyzer - 知識グラフのギャップを分析
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-ANALYZE-008
|
|
5
|
+
* @design DES-ANALYZE-008
|
|
6
|
+
* @task TASK-003
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* 知識グラフのギャップを分析するクラス
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const analyzer = new GapAnalyzer();
|
|
14
|
+
*
|
|
15
|
+
* const gaps = await analyzer.analyze(graph, 'AI ethics', ['privacy', 'bias']);
|
|
16
|
+
* for (const gap of gaps) {
|
|
17
|
+
* console.log(`[${gap.priority}] ${gap.description}`);
|
|
18
|
+
* console.log(` Suggested queries: ${gap.suggestedQueries.join(', ')}`);
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export class GapAnalyzer {
|
|
23
|
+
/**
|
|
24
|
+
* 知識グラフのギャップを分析
|
|
25
|
+
*/
|
|
26
|
+
async analyze(graph, topic, focusAreas) {
|
|
27
|
+
const gaps = [];
|
|
28
|
+
// 1. 孤立ノードの検出(未探索の側面)
|
|
29
|
+
const isolatedNodes = this.findIsolatedNodes(graph);
|
|
30
|
+
for (const node of isolatedNodes) {
|
|
31
|
+
const nodeName = node.properties.name || node.label;
|
|
32
|
+
gaps.push({
|
|
33
|
+
id: `gap-isolated-${node.id}`,
|
|
34
|
+
description: `"${nodeName}" has no connections - may need deeper exploration`,
|
|
35
|
+
type: 'unexplored_aspect',
|
|
36
|
+
relatedTopics: [nodeName],
|
|
37
|
+
suggestedQueries: [
|
|
38
|
+
`${nodeName} ${topic}`,
|
|
39
|
+
`${nodeName} applications`,
|
|
40
|
+
`${nodeName} research`,
|
|
41
|
+
],
|
|
42
|
+
priority: 'medium',
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
// 2. フォーカスエリアのカバレッジ不足
|
|
46
|
+
if (focusAreas) {
|
|
47
|
+
for (const area of focusAreas) {
|
|
48
|
+
const coverage = this.assessAreaCoverage(graph, area);
|
|
49
|
+
if (coverage < 0.3) {
|
|
50
|
+
gaps.push({
|
|
51
|
+
id: `gap-coverage-${area.replace(/\s+/g, '-')}`,
|
|
52
|
+
description: `Focus area "${area}" has low coverage (${(coverage * 100).toFixed(0)}%)`,
|
|
53
|
+
type: 'unexplored_aspect',
|
|
54
|
+
relatedTopics: [area],
|
|
55
|
+
suggestedQueries: [
|
|
56
|
+
`${topic} ${area}`,
|
|
57
|
+
`${area} latest research`,
|
|
58
|
+
`${area} case studies`,
|
|
59
|
+
],
|
|
60
|
+
priority: 'high',
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// 3. 深掘りが必要なノード
|
|
66
|
+
const needsDepth = this.findNeedsDepth(graph);
|
|
67
|
+
for (const node of needsDepth) {
|
|
68
|
+
const nodeName = node.properties.name || node.label;
|
|
69
|
+
gaps.push({
|
|
70
|
+
id: `gap-depth-${node.id}`,
|
|
71
|
+
description: `"${nodeName}" is mentioned frequently but lacks detailed information`,
|
|
72
|
+
type: 'depth_needed',
|
|
73
|
+
relatedTopics: [nodeName],
|
|
74
|
+
suggestedQueries: [
|
|
75
|
+
`${nodeName} detailed analysis`,
|
|
76
|
+
`${nodeName} comprehensive guide`,
|
|
77
|
+
`${nodeName} in depth`,
|
|
78
|
+
],
|
|
79
|
+
priority: 'medium',
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
// 4. 全体的なカバレッジが少ない場合
|
|
83
|
+
if (graph.nodes.length < 5) {
|
|
84
|
+
gaps.push({
|
|
85
|
+
id: 'gap-general-coverage',
|
|
86
|
+
description: 'Overall knowledge coverage is low',
|
|
87
|
+
type: 'unexplored_aspect',
|
|
88
|
+
relatedTopics: [topic],
|
|
89
|
+
suggestedQueries: [
|
|
90
|
+
`${topic} fundamentals`,
|
|
91
|
+
`${topic} key concepts`,
|
|
92
|
+
`${topic} overview comprehensive`,
|
|
93
|
+
],
|
|
94
|
+
priority: 'high',
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return gaps.sort((a, b) => {
|
|
98
|
+
const priorityOrder = { high: 0, medium: 1, low: 2 };
|
|
99
|
+
return priorityOrder[a.priority] - priorityOrder[b.priority];
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 孤立ノードを検出
|
|
104
|
+
*/
|
|
105
|
+
findIsolatedNodes(graph) {
|
|
106
|
+
const connectedIds = new Set();
|
|
107
|
+
for (const edge of graph.edges) {
|
|
108
|
+
connectedIds.add(edge.source);
|
|
109
|
+
connectedIds.add(edge.target);
|
|
110
|
+
}
|
|
111
|
+
return graph.nodes.filter((node) => !connectedIds.has(node.id) && node.type !== 'topic');
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* フォーカスエリアのカバレッジを評価
|
|
115
|
+
*/
|
|
116
|
+
assessAreaCoverage(graph, area) {
|
|
117
|
+
const areaLower = area.toLowerCase();
|
|
118
|
+
const relevantNodes = graph.nodes.filter((node) => {
|
|
119
|
+
const name = (node.properties.name || '').toLowerCase();
|
|
120
|
+
const desc = (node.properties.description || '').toLowerCase();
|
|
121
|
+
const label = (node.label || '').toLowerCase();
|
|
122
|
+
return name.includes(areaLower) || desc.includes(areaLower) || label.includes(areaLower);
|
|
123
|
+
});
|
|
124
|
+
// カバレッジスコア(最大10ノードで100%)
|
|
125
|
+
return Math.min(relevantNodes.length / 10, 1);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* 深掘りが必要なノードを検出
|
|
129
|
+
*/
|
|
130
|
+
findNeedsDepth(graph) {
|
|
131
|
+
const mentionCounts = new Map();
|
|
132
|
+
for (const edge of graph.edges) {
|
|
133
|
+
mentionCounts.set(edge.source, (mentionCounts.get(edge.source) || 0) + 1);
|
|
134
|
+
mentionCounts.set(edge.target, (mentionCounts.get(edge.target) || 0) + 1);
|
|
135
|
+
}
|
|
136
|
+
// 多く言及されているが詳細情報が少ないノード
|
|
137
|
+
return graph.nodes.filter((node) => {
|
|
138
|
+
const mentions = mentionCounts.get(node.id) || 0;
|
|
139
|
+
const hasDescription = !!node.properties.description;
|
|
140
|
+
const descLength = (node.properties.description || '').length;
|
|
141
|
+
return mentions >= 3 && (!hasDescription || descLength < 100);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=GapAnalyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GapAnalyzer.js","sourceRoot":"","sources":["../../src/research/GapAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QueryGenerator - リサーチクエリを生成
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-ANALYZE-008
|
|
5
|
+
* @design DES-ANALYZE-008
|
|
6
|
+
* @task TASK-003
|
|
7
|
+
*/
|
|
8
|
+
import type { KnowledgeGap, SimpleKnowledgeGraph } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* リサーチクエリを生成するクラス
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const generator = new QueryGenerator();
|
|
15
|
+
*
|
|
16
|
+
* // 初期クエリを生成
|
|
17
|
+
* const initial = generator.generateInitialQueries('AI ethics', ['privacy', 'bias']);
|
|
18
|
+
* // => ['AI ethics', 'AI ethics privacy', 'AI ethics bias', 'AI ethics overview', ...]
|
|
19
|
+
*
|
|
20
|
+
* // ギャップからクエリを生成
|
|
21
|
+
* const fromGaps = generator.generateFromGaps(gaps, graph, ['politics']);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare class QueryGenerator {
|
|
25
|
+
/**
|
|
26
|
+
* 初期クエリを生成
|
|
27
|
+
*/
|
|
28
|
+
generateInitialQueries(topic: string, focusAreas?: string[], _context?: string): string[];
|
|
29
|
+
/**
|
|
30
|
+
* 知識ギャップからクエリを生成
|
|
31
|
+
*/
|
|
32
|
+
generateFromGaps(gaps: KnowledgeGap[], graph: SimpleKnowledgeGraph, excludeAreas?: string[]): string[];
|
|
33
|
+
/**
|
|
34
|
+
* クエリを拡張(同義語・関連語を追加)
|
|
35
|
+
*/
|
|
36
|
+
expandQuery(query: string): string[];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=QueryGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryGenerator.d.ts","sourceRoot":"","sources":["../../src/research/QueryGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAc;IACzB;;OAEG;IACH,sBAAsB,CACpB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE;IAgBX;;OAEG;IACH,gBAAgB,CACd,IAAI,EAAE,YAAY,EAAE,EACpB,KAAK,EAAE,oBAAoB,EAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,MAAM,EAAE;IAgCX;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CAarC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QueryGenerator - リサーチクエリを生成
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-ANALYZE-008
|
|
5
|
+
* @design DES-ANALYZE-008
|
|
6
|
+
* @task TASK-003
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* リサーチクエリを生成するクラス
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const generator = new QueryGenerator();
|
|
14
|
+
*
|
|
15
|
+
* // 初期クエリを生成
|
|
16
|
+
* const initial = generator.generateInitialQueries('AI ethics', ['privacy', 'bias']);
|
|
17
|
+
* // => ['AI ethics', 'AI ethics privacy', 'AI ethics bias', 'AI ethics overview', ...]
|
|
18
|
+
*
|
|
19
|
+
* // ギャップからクエリを生成
|
|
20
|
+
* const fromGaps = generator.generateFromGaps(gaps, graph, ['politics']);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export class QueryGenerator {
|
|
24
|
+
/**
|
|
25
|
+
* 初期クエリを生成
|
|
26
|
+
*/
|
|
27
|
+
generateInitialQueries(topic, focusAreas, _context) {
|
|
28
|
+
const queries = [topic];
|
|
29
|
+
// フォーカスエリアを追加
|
|
30
|
+
if (focusAreas) {
|
|
31
|
+
for (const area of focusAreas) {
|
|
32
|
+
queries.push(`${topic} ${area}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// 一般的な拡張クエリ
|
|
36
|
+
queries.push(`${topic} overview`, `${topic} research`, `${topic} latest developments`);
|
|
37
|
+
return [...new Set(queries)]; // 重複除去
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 知識ギャップからクエリを生成
|
|
41
|
+
*/
|
|
42
|
+
generateFromGaps(gaps, graph, excludeAreas) {
|
|
43
|
+
const queries = [];
|
|
44
|
+
// 優先度順にギャップを処理
|
|
45
|
+
for (const gap of gaps) {
|
|
46
|
+
// 除外エリアに該当するかチェック
|
|
47
|
+
if (excludeAreas?.some((area) => gap.relatedTopics.some((t) => t.toLowerCase().includes(area.toLowerCase())))) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
queries.push(...gap.suggestedQueries);
|
|
51
|
+
}
|
|
52
|
+
// 既存ノードとの関連クエリ
|
|
53
|
+
const highValueNodes = graph.nodes
|
|
54
|
+
.filter((n) => n.type === 'concept' && n.properties.importance === 'high')
|
|
55
|
+
.slice(0, 3);
|
|
56
|
+
for (const node of highValueNodes) {
|
|
57
|
+
const nodeName = node.properties.name;
|
|
58
|
+
if (nodeName) {
|
|
59
|
+
queries.push(`${nodeName} detailed analysis`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return [...new Set(queries)].slice(0, 10); // 重複除去、最大10クエリ
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* クエリを拡張(同義語・関連語を追加)
|
|
66
|
+
*/
|
|
67
|
+
expandQuery(query) {
|
|
68
|
+
const expanded = [query];
|
|
69
|
+
// シンプルな拡張(将来的にはNLPベースの拡張を実装)
|
|
70
|
+
const variations = [
|
|
71
|
+
`${query} definition`,
|
|
72
|
+
`${query} examples`,
|
|
73
|
+
`${query} applications`,
|
|
74
|
+
`what is ${query}`,
|
|
75
|
+
];
|
|
76
|
+
return [...expanded, ...variations];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=QueryGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryGenerator.js","sourceRoot":"","sources":["../../src/research/QueryGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,cAAc;IACzB;;OAEG;IACH,sBAAsB,CACpB,KAAa,EACb,UAAqB,EACrB,QAAiB;QAEjB,MAAM,OAAO,GAAa,CAAC,KAAK,CAAC,CAAC;QAElC,cAAc;QACd,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,YAAY;QACZ,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,WAAW,EAAE,GAAG,KAAK,WAAW,EAAE,GAAG,KAAK,sBAAsB,CAAC,CAAC;QAEvF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;IACvC,CAAC;IAED;;OAEG;IACH,gBAAgB,CACd,IAAoB,EACpB,KAA2B,EAC3B,YAAuB;QAEvB,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,eAAe;QACf,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,kBAAkB;YAClB,IACE,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1B,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAC5E,EACD,CAAC;gBACD,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACxC,CAAC;QAED,eAAe;QACf,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK;aAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,KAAK,MAAM,CAAC;aACzE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEf,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAc,CAAC;YAChD,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,oBAAoB,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe;IAC5D,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAa;QACvB,MAAM,QAAQ,GAAa,CAAC,KAAK,CAAC,CAAC;QAEnC,6BAA6B;QAC7B,MAAM,UAAU,GAAG;YACjB,GAAG,KAAK,aAAa;YACrB,GAAG,KAAK,WAAW;YACnB,GAAG,KAAK,eAAe;YACvB,WAAW,KAAK,EAAE;SACnB,CAAC;QAEF,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deep Research モジュール
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-ANALYZE-008
|
|
5
|
+
* @design DES-ANALYZE-008
|
|
6
|
+
* @task TASK-003
|
|
7
|
+
*/
|
|
8
|
+
export { DeepResearchOrchestrator } from './DeepResearchOrchestrator.js';
|
|
9
|
+
export { GapAnalyzer } from './GapAnalyzer.js';
|
|
10
|
+
export { ConvergenceDetector } from './ConvergenceDetector.js';
|
|
11
|
+
export { QueryGenerator } from './QueryGenerator.js';
|
|
12
|
+
export { FindingIntegrator } from './FindingIntegrator.js';
|
|
13
|
+
export type { DeepResearchQuery, DeepResearchResult, ResearchProgress, ResearchPhase, SimpleKnowledgeGraph, KeyFinding, ImportanceLevel, SourceReference, IterationRecord, KnowledgeGap, GapType, GapPriority, UserGuidance, IntegrationResult, DeepResearchStatistics, CompletionReason, DepthPriority, } from './types.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/research/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,OAAO,EACP,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deep Research モジュール
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-ANALYZE-008
|
|
5
|
+
* @design DES-ANALYZE-008
|
|
6
|
+
* @task TASK-003
|
|
7
|
+
*/
|
|
8
|
+
export { DeepResearchOrchestrator } from './DeepResearchOrchestrator.js';
|
|
9
|
+
export { GapAnalyzer } from './GapAnalyzer.js';
|
|
10
|
+
export { ConvergenceDetector } from './ConvergenceDetector.js';
|
|
11
|
+
export { QueryGenerator } from './QueryGenerator.js';
|
|
12
|
+
export { FindingIntegrator } from './FindingIntegrator.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/research/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deep Research Orchestrator - 型定義
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-ANALYZE-008
|
|
5
|
+
* @design DES-ANALYZE-008
|
|
6
|
+
* @task TASK-003
|
|
7
|
+
*/
|
|
8
|
+
import type { GraphNode, GraphEdge } from '@nahisaho/katashiro-knowledge';
|
|
9
|
+
/**
|
|
10
|
+
* Deep Research クエリ
|
|
11
|
+
*/
|
|
12
|
+
export interface DeepResearchQuery {
|
|
13
|
+
/** 調査トピック */
|
|
14
|
+
topic: string;
|
|
15
|
+
/** 初期コンテキスト(背景情報など) */
|
|
16
|
+
context?: string;
|
|
17
|
+
/** 最大イテレーション数 */
|
|
18
|
+
maxIterations?: number;
|
|
19
|
+
/** 収束閾値 (0-1) - 新規情報率がこれ以下で収束と判定 */
|
|
20
|
+
convergenceThreshold?: number;
|
|
21
|
+
/** ユーザーガイダンスを有効にするか */
|
|
22
|
+
userGuidance?: boolean;
|
|
23
|
+
/** 各イテレーションのタイムアウト(ミリ秒) */
|
|
24
|
+
iterationTimeout?: number;
|
|
25
|
+
/** 全体のタイムアウト(ミリ秒) */
|
|
26
|
+
totalTimeout?: number;
|
|
27
|
+
/** 重点的に調査する観点 */
|
|
28
|
+
focusAreas?: string[];
|
|
29
|
+
/** 除外する観点 */
|
|
30
|
+
excludeAreas?: string[];
|
|
31
|
+
/** 深さの優先度設定 */
|
|
32
|
+
depthPriority?: DepthPriority;
|
|
33
|
+
}
|
|
34
|
+
export type DepthPriority = 'breadth-first' | 'depth-first' | 'balanced';
|
|
35
|
+
/**
|
|
36
|
+
* Deep Research 最終結果
|
|
37
|
+
*/
|
|
38
|
+
export interface DeepResearchResult {
|
|
39
|
+
/** 調査トピック */
|
|
40
|
+
topic: string;
|
|
41
|
+
/** 構築された知識グラフ(シリアライズ形式) */
|
|
42
|
+
knowledgeGraph: SimpleKnowledgeGraph;
|
|
43
|
+
/** エグゼクティブサマリー */
|
|
44
|
+
summary: string;
|
|
45
|
+
/** 主要な発見事項 */
|
|
46
|
+
keyFindings: KeyFinding[];
|
|
47
|
+
/** 全ての参照ソース */
|
|
48
|
+
sources: SourceReference[];
|
|
49
|
+
/** イテレーション履歴 */
|
|
50
|
+
iterations: IterationRecord[];
|
|
51
|
+
/** 残存する知識ギャップ */
|
|
52
|
+
remainingGaps: KnowledgeGap[];
|
|
53
|
+
/** 統計情報 */
|
|
54
|
+
statistics: DeepResearchStatistics;
|
|
55
|
+
/** 完了理由 */
|
|
56
|
+
completionReason: CompletionReason;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* シンプルな知識グラフ構造(AsyncGenerator用)
|
|
60
|
+
*/
|
|
61
|
+
export interface SimpleKnowledgeGraph {
|
|
62
|
+
nodes: GraphNode[];
|
|
63
|
+
edges: GraphEdge[];
|
|
64
|
+
}
|
|
65
|
+
export type CompletionReason = 'converged' | 'max_iterations' | 'timeout' | 'user_stopped' | 'no_new_queries';
|
|
66
|
+
/**
|
|
67
|
+
* 進捗情報(AsyncGenerator の yield 値)
|
|
68
|
+
*/
|
|
69
|
+
export interface ResearchProgress {
|
|
70
|
+
/** 現在のイテレーション番号 */
|
|
71
|
+
iteration: number;
|
|
72
|
+
/** 現在のフェーズ */
|
|
73
|
+
phase: ResearchPhase;
|
|
74
|
+
/** 現在実行中のクエリ */
|
|
75
|
+
currentQuery: string;
|
|
76
|
+
/** 累計発見数 */
|
|
77
|
+
totalFindingsCount: number;
|
|
78
|
+
/** 新規情報率 (0-1) */
|
|
79
|
+
noveltyRate: number;
|
|
80
|
+
/** 収束スコア (0-1) */
|
|
81
|
+
convergenceScore: number;
|
|
82
|
+
/** 識別された知識ギャップ */
|
|
83
|
+
gaps: KnowledgeGap[];
|
|
84
|
+
/** 経過時間(ミリ秒) */
|
|
85
|
+
elapsedTime: number;
|
|
86
|
+
}
|
|
87
|
+
export type ResearchPhase = 'searching' | 'integrating' | 'analyzing' | 'waiting_guidance' | 'completed';
|
|
88
|
+
/**
|
|
89
|
+
* 主要な発見事項
|
|
90
|
+
*/
|
|
91
|
+
export interface KeyFinding {
|
|
92
|
+
/** 発見事項ID */
|
|
93
|
+
id: string;
|
|
94
|
+
/** タイトル */
|
|
95
|
+
title: string;
|
|
96
|
+
/** 要約 */
|
|
97
|
+
summary: string;
|
|
98
|
+
/** 重要度 */
|
|
99
|
+
importance: ImportanceLevel;
|
|
100
|
+
/** 発見元ソースURL */
|
|
101
|
+
sources: string[];
|
|
102
|
+
/** 関連コンセプト */
|
|
103
|
+
relatedConcepts: string[];
|
|
104
|
+
}
|
|
105
|
+
export type ImportanceLevel = 'high' | 'medium' | 'low';
|
|
106
|
+
/**
|
|
107
|
+
* 知識ギャップ
|
|
108
|
+
*/
|
|
109
|
+
export interface KnowledgeGap {
|
|
110
|
+
/** ギャップID */
|
|
111
|
+
id: string;
|
|
112
|
+
/** ギャップの説明 */
|
|
113
|
+
description: string;
|
|
114
|
+
/** ギャップのタイプ */
|
|
115
|
+
type: GapType;
|
|
116
|
+
/** 関連するトピック/ノード */
|
|
117
|
+
relatedTopics: string[];
|
|
118
|
+
/** 推奨される調査方向 */
|
|
119
|
+
suggestedQueries: string[];
|
|
120
|
+
/** 優先度 */
|
|
121
|
+
priority: 'high' | 'medium' | 'low';
|
|
122
|
+
}
|
|
123
|
+
export type GapType = 'missing_evidence' | 'contradictory_info' | 'unexplored_aspect' | 'outdated_info' | 'depth_needed';
|
|
124
|
+
export type GapPriority = 'high' | 'medium' | 'low';
|
|
125
|
+
/**
|
|
126
|
+
* イテレーション記録
|
|
127
|
+
*/
|
|
128
|
+
export interface IterationRecord {
|
|
129
|
+
/** イテレーション番号 */
|
|
130
|
+
iterationNumber: number;
|
|
131
|
+
/** 使用したクエリ */
|
|
132
|
+
queries: string[];
|
|
133
|
+
/** 取得した発見数 */
|
|
134
|
+
findingsCount: number;
|
|
135
|
+
/** 追加したノード数 */
|
|
136
|
+
newNodesCount: number;
|
|
137
|
+
/** 追加したエッジ数 */
|
|
138
|
+
newEdgesCount: number;
|
|
139
|
+
/** 新規情報率 (0-1) */
|
|
140
|
+
noveltyRate: number;
|
|
141
|
+
/** 処理時間(ミリ秒) */
|
|
142
|
+
duration: number;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* 参照ソース
|
|
146
|
+
*/
|
|
147
|
+
export interface SourceReference {
|
|
148
|
+
/** URL */
|
|
149
|
+
url: string;
|
|
150
|
+
/** タイトル */
|
|
151
|
+
title: string;
|
|
152
|
+
/** ソースタイプ */
|
|
153
|
+
type: string;
|
|
154
|
+
/** アクセス日時 */
|
|
155
|
+
accessedAt: Date;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* 統計情報
|
|
159
|
+
*/
|
|
160
|
+
export interface DeepResearchStatistics {
|
|
161
|
+
/** 総イテレーション数 */
|
|
162
|
+
totalIterations: number;
|
|
163
|
+
/** 総処理発見数 */
|
|
164
|
+
totalFindingsProcessed: number;
|
|
165
|
+
/** 作成したノード数 */
|
|
166
|
+
totalNodesCreated: number;
|
|
167
|
+
/** 作成したエッジ数 */
|
|
168
|
+
totalEdgesCreated: number;
|
|
169
|
+
/** 平均新規情報率 */
|
|
170
|
+
averageNoveltyRate: number;
|
|
171
|
+
/** 総処理時間(ミリ秒) */
|
|
172
|
+
totalDuration: number;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* ユーザーガイダンス入力
|
|
176
|
+
*/
|
|
177
|
+
export interface UserGuidance {
|
|
178
|
+
/** アクション */
|
|
179
|
+
action: 'continue' | 'stop' | 'focus' | 'exclude';
|
|
180
|
+
/** フォーカスする方向(オプション) */
|
|
181
|
+
focusDirection?: string;
|
|
182
|
+
/** 除外する方向(オプション) */
|
|
183
|
+
excludeDirection?: string;
|
|
184
|
+
/** 追加クエリ(オプション) */
|
|
185
|
+
additionalQueries?: string[];
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* エラー型
|
|
189
|
+
*/
|
|
190
|
+
export interface DeepResearchError {
|
|
191
|
+
code: DeepResearchErrorCode;
|
|
192
|
+
message: string;
|
|
193
|
+
iteration?: number;
|
|
194
|
+
details?: unknown;
|
|
195
|
+
}
|
|
196
|
+
export type DeepResearchErrorCode = 'INVALID_QUERY' | 'INITIALIZATION_FAILED' | 'ITERATION_FAILED' | 'TIMEOUT' | 'USER_CANCELLED' | 'UNKNOWN_ERROR';
|
|
197
|
+
/**
|
|
198
|
+
* Finding統合結果
|
|
199
|
+
*/
|
|
200
|
+
export interface IntegrationResult {
|
|
201
|
+
newNodesCount: number;
|
|
202
|
+
newEdgesCount: number;
|
|
203
|
+
updatedNodesCount: number;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* デフォルト設定
|
|
207
|
+
*/
|
|
208
|
+
export declare const DEFAULT_DEEP_RESEARCH_CONFIG: {
|
|
209
|
+
readonly maxIterations: 10;
|
|
210
|
+
readonly convergenceThreshold: 0.15;
|
|
211
|
+
readonly iterationTimeout: 60000;
|
|
212
|
+
readonly totalTimeout: 600000;
|
|
213
|
+
readonly depthPriority: DepthPriority;
|
|
214
|
+
};
|
|
215
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/research/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deep Research Orchestrator - 型定義
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-ANALYZE-008
|
|
5
|
+
* @design DES-ANALYZE-008
|
|
6
|
+
* @task TASK-003
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* デフォルト設定
|
|
10
|
+
*/
|
|
11
|
+
export const DEFAULT_DEEP_RESEARCH_CONFIG = {
|
|
12
|
+
maxIterations: 10,
|
|
13
|
+
convergenceThreshold: 0.15, // 新規情報率15%以下で収束
|
|
14
|
+
iterationTimeout: 60000, // 1分
|
|
15
|
+
totalTimeout: 600000, // 10分
|
|
16
|
+
depthPriority: 'balanced',
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/research/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsSH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,aAAa,EAAE,EAAE;IACjB,oBAAoB,EAAE,IAAI,EAAE,gBAAgB;IAC5C,gBAAgB,EAAE,KAAK,EAAE,KAAK;IAC9B,YAAY,EAAE,MAAM,EAAE,MAAM;IAC5B,aAAa,EAAE,UAA2B;CAClC,CAAC"}
|