@nahisaho/musubix-deep-research 3.4.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.
Files changed (142) hide show
  1. package/README.md +89 -0
  2. package/dist/engine/research-engine.d.ts +97 -0
  3. package/dist/engine/research-engine.d.ts.map +1 -0
  4. package/dist/engine/research-engine.js +260 -0
  5. package/dist/engine/research-engine.js.map +1 -0
  6. package/dist/index.d.ts +22 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +30 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/integration/knowledge-store.d.ts +117 -0
  11. package/dist/integration/knowledge-store.d.ts.map +1 -0
  12. package/dist/integration/knowledge-store.js +222 -0
  13. package/dist/integration/knowledge-store.js.map +1 -0
  14. package/dist/integration/orchestration-engine.d.ts +102 -0
  15. package/dist/integration/orchestration-engine.d.ts.map +1 -0
  16. package/dist/integration/orchestration-engine.js +216 -0
  17. package/dist/integration/orchestration-engine.js.map +1 -0
  18. package/dist/integration/vscode-extension.d.ts +161 -0
  19. package/dist/integration/vscode-extension.d.ts.map +1 -0
  20. package/dist/integration/vscode-extension.js +319 -0
  21. package/dist/integration/vscode-extension.js.map +1 -0
  22. package/dist/integration/workflow-engine.d.ts +128 -0
  23. package/dist/integration/workflow-engine.d.ts.map +1 -0
  24. package/dist/integration/workflow-engine.js +239 -0
  25. package/dist/integration/workflow-engine.js.map +1 -0
  26. package/dist/knowledge/knowledge-base.d.ts +49 -0
  27. package/dist/knowledge/knowledge-base.d.ts.map +1 -0
  28. package/dist/knowledge/knowledge-base.js +91 -0
  29. package/dist/knowledge/knowledge-base.js.map +1 -0
  30. package/dist/mcp/index.d.ts +6 -0
  31. package/dist/mcp/index.d.ts.map +1 -0
  32. package/dist/mcp/index.js +6 -0
  33. package/dist/mcp/index.js.map +1 -0
  34. package/dist/mcp/tools.d.ts +234 -0
  35. package/dist/mcp/tools.d.ts.map +1 -0
  36. package/dist/mcp/tools.js +276 -0
  37. package/dist/mcp/tools.js.map +1 -0
  38. package/dist/performance/caching-layer.d.ts +142 -0
  39. package/dist/performance/caching-layer.d.ts.map +1 -0
  40. package/dist/performance/caching-layer.js +229 -0
  41. package/dist/performance/caching-layer.js.map +1 -0
  42. package/dist/performance/index.d.ts +8 -0
  43. package/dist/performance/index.d.ts.map +1 -0
  44. package/dist/performance/index.js +8 -0
  45. package/dist/performance/index.js.map +1 -0
  46. package/dist/performance/parallel-executor.d.ts +127 -0
  47. package/dist/performance/parallel-executor.d.ts.map +1 -0
  48. package/dist/performance/parallel-executor.js +160 -0
  49. package/dist/performance/parallel-executor.js.map +1 -0
  50. package/dist/performance/resource-monitor.d.ts +186 -0
  51. package/dist/performance/resource-monitor.d.ts.map +1 -0
  52. package/dist/performance/resource-monitor.js +265 -0
  53. package/dist/performance/resource-monitor.js.map +1 -0
  54. package/dist/providers/brave-provider.d.ts +49 -0
  55. package/dist/providers/brave-provider.d.ts.map +1 -0
  56. package/dist/providers/brave-provider.js +152 -0
  57. package/dist/providers/brave-provider.js.map +1 -0
  58. package/dist/providers/duckduckgo-provider.d.ts +48 -0
  59. package/dist/providers/duckduckgo-provider.d.ts.map +1 -0
  60. package/dist/providers/duckduckgo-provider.js +181 -0
  61. package/dist/providers/duckduckgo-provider.js.map +1 -0
  62. package/dist/providers/expert-integration.d.ts +55 -0
  63. package/dist/providers/expert-integration.d.ts.map +1 -0
  64. package/dist/providers/expert-integration.js +139 -0
  65. package/dist/providers/expert-integration.js.map +1 -0
  66. package/dist/providers/jina-provider.d.ts +68 -0
  67. package/dist/providers/jina-provider.d.ts.map +1 -0
  68. package/dist/providers/jina-provider.js +219 -0
  69. package/dist/providers/jina-provider.js.map +1 -0
  70. package/dist/providers/neural-search-provider.d.ts +63 -0
  71. package/dist/providers/neural-search-provider.d.ts.map +1 -0
  72. package/dist/providers/neural-search-provider.js +164 -0
  73. package/dist/providers/neural-search-provider.js.map +1 -0
  74. package/dist/providers/provider-factory.d.ts +83 -0
  75. package/dist/providers/provider-factory.d.ts.map +1 -0
  76. package/dist/providers/provider-factory.js +176 -0
  77. package/dist/providers/provider-factory.js.map +1 -0
  78. package/dist/providers/vscode-lm-provider.d.ts +33 -0
  79. package/dist/providers/vscode-lm-provider.d.ts.map +1 -0
  80. package/dist/providers/vscode-lm-provider.js +97 -0
  81. package/dist/providers/vscode-lm-provider.js.map +1 -0
  82. package/dist/reasoning/lm-reasoning.d.ts +104 -0
  83. package/dist/reasoning/lm-reasoning.d.ts.map +1 -0
  84. package/dist/reasoning/lm-reasoning.js +244 -0
  85. package/dist/reasoning/lm-reasoning.js.map +1 -0
  86. package/dist/reporters/report-generator.d.ts +58 -0
  87. package/dist/reporters/report-generator.d.ts.map +1 -0
  88. package/dist/reporters/report-generator.js +222 -0
  89. package/dist/reporters/report-generator.js.map +1 -0
  90. package/dist/security/content-sanitizer.d.ts +105 -0
  91. package/dist/security/content-sanitizer.d.ts.map +1 -0
  92. package/dist/security/content-sanitizer.js +257 -0
  93. package/dist/security/content-sanitizer.js.map +1 -0
  94. package/dist/security/secret-manager.d.ts +103 -0
  95. package/dist/security/secret-manager.d.ts.map +1 -0
  96. package/dist/security/secret-manager.js +224 -0
  97. package/dist/security/secret-manager.js.map +1 -0
  98. package/dist/security/secure-logger.d.ts +136 -0
  99. package/dist/security/secure-logger.d.ts.map +1 -0
  100. package/dist/security/secure-logger.js +232 -0
  101. package/dist/security/secure-logger.js.map +1 -0
  102. package/dist/test/index.d.ts +2 -0
  103. package/dist/test/index.d.ts.map +1 -0
  104. package/dist/test/index.js +4 -0
  105. package/dist/test/index.js.map +1 -0
  106. package/dist/test/mocks/index.d.ts +7 -0
  107. package/dist/test/mocks/index.d.ts.map +1 -0
  108. package/dist/test/mocks/index.js +7 -0
  109. package/dist/test/mocks/index.js.map +1 -0
  110. package/dist/test/mocks/mock-expert-delegation.d.ts +62 -0
  111. package/dist/test/mocks/mock-expert-delegation.d.ts.map +1 -0
  112. package/dist/test/mocks/mock-expert-delegation.js +70 -0
  113. package/dist/test/mocks/mock-expert-delegation.js.map +1 -0
  114. package/dist/test/mocks/mock-http-client.d.ts +82 -0
  115. package/dist/test/mocks/mock-http-client.d.ts.map +1 -0
  116. package/dist/test/mocks/mock-http-client.js +111 -0
  117. package/dist/test/mocks/mock-http-client.js.map +1 -0
  118. package/dist/test/mocks/mock-lm-provider.d.ts +45 -0
  119. package/dist/test/mocks/mock-lm-provider.d.ts.map +1 -0
  120. package/dist/test/mocks/mock-lm-provider.js +80 -0
  121. package/dist/test/mocks/mock-lm-provider.js.map +1 -0
  122. package/dist/test/mocks/mock-search-provider.d.ts +62 -0
  123. package/dist/test/mocks/mock-search-provider.d.ts.map +1 -0
  124. package/dist/test/mocks/mock-search-provider.js +101 -0
  125. package/dist/test/mocks/mock-search-provider.js.map +1 -0
  126. package/dist/types/errors.d.ts +53 -0
  127. package/dist/types/errors.d.ts.map +1 -0
  128. package/dist/types/errors.js +79 -0
  129. package/dist/types/errors.js.map +1 -0
  130. package/dist/types/index.d.ts +369 -0
  131. package/dist/types/index.d.ts.map +1 -0
  132. package/dist/types/index.js +5 -0
  133. package/dist/types/index.js.map +1 -0
  134. package/dist/utils/token-tracker.d.ts +45 -0
  135. package/dist/utils/token-tracker.d.ts.map +1 -0
  136. package/dist/utils/token-tracker.js +85 -0
  137. package/dist/utils/token-tracker.js.map +1 -0
  138. package/dist/utils/trajectory-logger.d.ts +42 -0
  139. package/dist/utils/trajectory-logger.d.ts.map +1 -0
  140. package/dist/utils/trajectory-logger.js +83 -0
  141. package/dist/utils/trajectory-logger.js.map +1 -0
  142. package/package.json +74 -0
package/README.md ADDED
@@ -0,0 +1,89 @@
1
+ # @nahisaho/musubix-deep-research
2
+
3
+ Deep Research Integration for MUSUBIX - Iterative search-read-reason cycle for AI agents during requirements and design phases.
4
+
5
+ ## Features
6
+
7
+ - 🔄 **Iterative Research Cycle**: Search → Read → Reason → Reflect loop
8
+ - 🔍 **Multi-Provider Search**: Jina AI (primary), Brave (fallback 1), DuckDuckGo (fallback 2)
9
+ - 🧠 **LM API Integration**: VS Code LM API (GitHub Copilot) for reasoning
10
+ - 📚 **Knowledge Accumulation**: Persistent knowledge base across iterations
11
+ - 💰 **Token Budget Management**: Automatic tracking and limits
12
+ - 📊 **Research Reports**: Markdown/JSON formatted reports with citations
13
+
14
+ ## Installation
15
+
16
+ ```bash
17
+ npm install @nahisaho/musubix-deep-research
18
+ ```
19
+
20
+ ## Usage
21
+
22
+ ### CLI
23
+
24
+ ```bash
25
+ # Start deep research
26
+ npx musubix deep-research "How to implement authentication in TypeScript?"
27
+
28
+ # With options
29
+ npx musubix deep-research "TypeScript decorators" \
30
+ --max-iterations 5 \
31
+ --token-budget 10000 \
32
+ --output report.md
33
+ ```
34
+
35
+ ### Programmatic API
36
+
37
+ ```typescript
38
+ import { ResearchEngine, ResearchConfig } from '@nahisaho/musubix-deep-research';
39
+
40
+ const config: ResearchConfig = {
41
+ query: 'How to implement authentication in TypeScript?',
42
+ maxIterations: 10,
43
+ tokenBudget: 15000,
44
+ providers: {
45
+ jinaApiKey: process.env.JINA_API_KEY,
46
+ braveApiKey: process.env.BRAVE_API_KEY,
47
+ },
48
+ };
49
+
50
+ const engine = new ResearchEngine(config);
51
+ const report = await engine.research();
52
+
53
+ console.log(report.summary);
54
+ console.log(`Found ${report.findings.length} findings`);
55
+ ```
56
+
57
+ ## Architecture
58
+
59
+ Based on **Template Method Pattern** (ADR-v3.4.0-001):
60
+
61
+ ```
62
+ ResearchEngine (Template Method)
63
+ ├─ initialize()
64
+ ├─ while (!shouldStop())
65
+ │ ├─ generateQuestions() → LMReasoning
66
+ │ ├─ search() → SearchProviderFactory
67
+ │ ├─ read() → JinaProvider.read()
68
+ │ ├─ reason() → LMReasoning
69
+ │ └─ logIteration() → TrajectoryLogger
70
+ └─ generateReport() → ReportGenerator
71
+ ```
72
+
73
+ ## Requirements
74
+
75
+ - Node.js >= 20.0.0
76
+ - npm >= 10.0.0
77
+ - VS Code with GitHub Copilot (for LM API)
78
+ - Jina AI API Key (recommended)
79
+
80
+ ## License
81
+
82
+ MIT
83
+
84
+ ## Documentation
85
+
86
+ - [Requirements](../../storage/specs/REQ-MUSUBIX-v3.4.0.md)
87
+ - [Design](../../storage/design/DES-DR-v3.4.0.md)
88
+ - [ADRs](../../docs/adr/)
89
+ - [Tasks](../../storage/tasks/TSK-DR-v3.4.0.md)
@@ -0,0 +1,97 @@
1
+ import { KnowledgeBase } from '../knowledge/knowledge-base.js';
2
+ import { TokenTracker } from '../utils/token-tracker.js';
3
+ import { TrajectoryLogger } from '../utils/trajectory-logger.js';
4
+ import { ReportGenerator } from '../reporters/report-generator.js';
5
+ import type { ResearchConfig, ResearchReport, ReflectiveQuestion, SearchResult, WebContent, KnowledgeItem } from '../types/index.js';
6
+ /**
7
+ * Research Engine - Main orchestrator using Template Method Pattern
8
+ *
9
+ * REQ: REQ-DR-CORE-001 - Iterative search-read-reason cycle
10
+ * ADR: ADR-v3.4.0-001 - Template Method Pattern architecture
11
+ *
12
+ * Flow:
13
+ * 1. initialize()
14
+ * 2. while (!shouldStop())
15
+ * a. generateQuestions()
16
+ * b. search()
17
+ * c. read()
18
+ * d. reason()
19
+ * e. evaluate()
20
+ * 3. generateReport()
21
+ */
22
+ export declare class ResearchEngine {
23
+ protected knowledge: KnowledgeBase;
24
+ protected tokenTracker: TokenTracker;
25
+ protected logger: TrajectoryLogger;
26
+ protected reportGenerator: ReportGenerator;
27
+ protected config: ResearchConfig;
28
+ protected iteration: number;
29
+ protected startTime: number;
30
+ protected definitiveAnswer: string | null;
31
+ constructor(config: ResearchConfig);
32
+ /**
33
+ * Main research method - Template Method
34
+ *
35
+ * REQ: REQ-DR-CORE-001 - Iterative cycle
36
+ */
37
+ research(): Promise<ResearchReport>;
38
+ /**
39
+ * Initialize research session
40
+ */
41
+ protected initialize(): void;
42
+ /**
43
+ * Check if research should stop
44
+ *
45
+ * Stopping conditions:
46
+ * 1. Max iterations reached
47
+ * 2. Token budget exceeded
48
+ * 3. Definitive answer found
49
+ */
50
+ protected shouldStop(): boolean;
51
+ /**
52
+ * Hook: Generate reflective questions
53
+ * Override in subclass or use LMReasoning
54
+ */
55
+ protected generateQuestions(): Promise<ReflectiveQuestion[]>;
56
+ /**
57
+ * Hook: Search for information
58
+ * Override in subclass or use SearchProviderFactory
59
+ */
60
+ protected search(_questions: ReflectiveQuestion[]): Promise<SearchResult[]>;
61
+ /**
62
+ * Hook: Read web contents
63
+ * Override in subclass or use JinaProvider
64
+ */
65
+ protected read(_results: SearchResult[]): Promise<WebContent[]>;
66
+ /**
67
+ * Hook: Reason and extract knowledge
68
+ * Override in subclass or use LMReasoning
69
+ */
70
+ protected reason(contents: WebContent[]): Promise<KnowledgeItem[]>;
71
+ /**
72
+ * Check if answer is definitive
73
+ * Override in subclass or use LMReasoning
74
+ */
75
+ protected isAnswerDefinitive(): Promise<boolean>;
76
+ /**
77
+ * Generate final research report
78
+ */
79
+ protected generateFinalReport(): Promise<ResearchReport>;
80
+ /**
81
+ * Validate configuration
82
+ */
83
+ private validateConfig;
84
+ /**
85
+ * Get current knowledge base (for testing)
86
+ */
87
+ getKnowledge(): KnowledgeBase;
88
+ /**
89
+ * Get token tracker (for testing)
90
+ */
91
+ getTokenTracker(): TokenTracker;
92
+ /**
93
+ * Get trajectory logger (for testing)
94
+ */
95
+ getLogger(): TrajectoryLogger;
96
+ }
97
+ //# sourceMappingURL=research-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research-engine.d.ts","sourceRoot":"","sources":["../../src/engine/research-engine.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,aAAa,EACd,MAAM,mBAAmB,CAAC;AAG3B;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAc;IACzB,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC;IACnC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC;IACnC,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAE3C,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAK;IAChC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAK;IAChC,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAErC,MAAM,EAAE,cAAc;IAelC;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IA4DzC;;OAEG;IACH,SAAS,CAAC,UAAU,IAAI,IAAI;IAU5B;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,IAAI,OAAO;IAqB/B;;;OAGG;cACa,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAWlE;;;OAGG;cACa,MAAM,CAAC,UAAU,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAOjF;;;OAGG;cACa,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAOrE;;;OAGG;cACa,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoBxE;;;OAGG;cACa,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IActD;;OAEG;cACa,mBAAmB,IAAI,OAAO,CAAC,cAAc,CAAC;IAuB9D;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,YAAY,IAAI,aAAa;IAI7B;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,SAAS,IAAI,gBAAgB;CAG9B"}
@@ -0,0 +1,260 @@
1
+ // Research Engine - Template Method Pattern
2
+ // TSK-DR-001
3
+ // REQ: REQ-DR-CORE-001
4
+ // ADR: ADR-v3.4.0-001
5
+ import { KnowledgeBase } from '../knowledge/knowledge-base.js';
6
+ import { TokenTracker } from '../utils/token-tracker.js';
7
+ import { TrajectoryLogger } from '../utils/trajectory-logger.js';
8
+ import { ReportGenerator } from '../reporters/report-generator.js';
9
+ import { InvalidConfigurationError } from '../types/errors.js';
10
+ /**
11
+ * Research Engine - Main orchestrator using Template Method Pattern
12
+ *
13
+ * REQ: REQ-DR-CORE-001 - Iterative search-read-reason cycle
14
+ * ADR: ADR-v3.4.0-001 - Template Method Pattern architecture
15
+ *
16
+ * Flow:
17
+ * 1. initialize()
18
+ * 2. while (!shouldStop())
19
+ * a. generateQuestions()
20
+ * b. search()
21
+ * c. read()
22
+ * d. reason()
23
+ * e. evaluate()
24
+ * 3. generateReport()
25
+ */
26
+ export class ResearchEngine {
27
+ knowledge;
28
+ tokenTracker;
29
+ logger;
30
+ reportGenerator;
31
+ config;
32
+ iteration = 0;
33
+ startTime = 0;
34
+ definitiveAnswer = null;
35
+ constructor(config) {
36
+ this.validateConfig(config);
37
+ this.config = {
38
+ maxIterations: 10,
39
+ tokenBudget: 15000,
40
+ outputFormat: 'markdown',
41
+ ...config,
42
+ };
43
+ this.knowledge = new KnowledgeBase();
44
+ this.tokenTracker = new TokenTracker(this.config.tokenBudget);
45
+ this.logger = new TrajectoryLogger();
46
+ this.reportGenerator = new ReportGenerator();
47
+ }
48
+ /**
49
+ * Main research method - Template Method
50
+ *
51
+ * REQ: REQ-DR-CORE-001 - Iterative cycle
52
+ */
53
+ async research() {
54
+ this.initialize();
55
+ while (!this.shouldStop()) {
56
+ console.log(`\n🔍 === Iteration ${this.iteration + 1}/${this.config.maxIterations} ===`);
57
+ try {
58
+ // Generate reflective questions
59
+ const questions = await this.generateQuestions();
60
+ // Search for information
61
+ const searchResults = await this.search(questions);
62
+ this.logger.logIteration({
63
+ iteration: this.iteration,
64
+ action: {
65
+ type: 'search',
66
+ query: questions[0]?.question || this.config.query,
67
+ resultsCount: searchResults.length,
68
+ },
69
+ tokensUsed: 0,
70
+ knowledgeGained: 0,
71
+ timestamp: Date.now(),
72
+ });
73
+ // Read web contents
74
+ const contents = await this.read(searchResults);
75
+ // Reason and extract knowledge
76
+ const knowledgeItems = await this.reason(contents);
77
+ this.knowledge.addAll(knowledgeItems);
78
+ this.logger.logIteration({
79
+ iteration: this.iteration,
80
+ action: {
81
+ type: 'reason',
82
+ tokensUsed: 0, // Updated by LMReasoning
83
+ knowledgeGained: knowledgeItems.length,
84
+ },
85
+ tokensUsed: 0,
86
+ knowledgeGained: knowledgeItems.length,
87
+ timestamp: Date.now(),
88
+ });
89
+ // Evaluate if answer is definitive
90
+ if (await this.isAnswerDefinitive()) {
91
+ console.log('✅ Definitive answer found');
92
+ break;
93
+ }
94
+ this.iteration++;
95
+ }
96
+ catch (error) {
97
+ console.error(`❌ Error in iteration ${this.iteration}:`, error);
98
+ // Continue to next iteration on non-fatal errors
99
+ this.iteration++;
100
+ }
101
+ }
102
+ return this.generateFinalReport();
103
+ }
104
+ /**
105
+ * Initialize research session
106
+ */
107
+ initialize() {
108
+ this.iteration = 0;
109
+ this.startTime = Date.now();
110
+ this.definitiveAnswer = null;
111
+ console.log(`🚀 Starting research: "${this.config.query}"`);
112
+ console.log(` Max iterations: ${this.config.maxIterations}`);
113
+ console.log(` Token budget: ${this.config.tokenBudget}`);
114
+ }
115
+ /**
116
+ * Check if research should stop
117
+ *
118
+ * Stopping conditions:
119
+ * 1. Max iterations reached
120
+ * 2. Token budget exceeded
121
+ * 3. Definitive answer found
122
+ */
123
+ shouldStop() {
124
+ // Max iterations
125
+ if (this.iteration >= this.config.maxIterations) {
126
+ console.log('⏹️ Max iterations reached');
127
+ return true;
128
+ }
129
+ // Token budget exceeded
130
+ if (this.tokenTracker.isExceeded()) {
131
+ console.log('⏹️ Token budget exceeded');
132
+ return true;
133
+ }
134
+ // Definitive answer found
135
+ if (this.definitiveAnswer !== null) {
136
+ return true;
137
+ }
138
+ return false;
139
+ }
140
+ /**
141
+ * Hook: Generate reflective questions
142
+ * Override in subclass or use LMReasoning
143
+ */
144
+ async generateQuestions() {
145
+ // Default implementation: return initial query as question
146
+ return [
147
+ {
148
+ question: this.config.query,
149
+ reason: 'Initial research question',
150
+ priority: 5,
151
+ },
152
+ ];
153
+ }
154
+ /**
155
+ * Hook: Search for information
156
+ * Override in subclass or use SearchProviderFactory
157
+ */
158
+ async search(_questions) {
159
+ // Default implementation: return empty results
160
+ // Will be implemented in TSK-DR-006 (SearchProviderFactory)
161
+ console.log('⚠️ search() not implemented yet, returning empty results');
162
+ return [];
163
+ }
164
+ /**
165
+ * Hook: Read web contents
166
+ * Override in subclass or use JinaProvider
167
+ */
168
+ async read(_results) {
169
+ // Default implementation: return empty contents
170
+ // Will be implemented in TSK-DR-007 (JinaProvider)
171
+ console.log('⚠️ read() not implemented yet, returning empty contents');
172
+ return [];
173
+ }
174
+ /**
175
+ * Hook: Reason and extract knowledge
176
+ * Override in subclass or use LMReasoning
177
+ */
178
+ async reason(contents) {
179
+ // Default implementation: extract basic knowledge
180
+ const knowledgeItems = [];
181
+ for (const content of contents) {
182
+ for (const fact of content.extractedFacts) {
183
+ knowledgeItems.push({
184
+ type: 'fact',
185
+ content: fact,
186
+ sources: [content.url],
187
+ relevance: 0.7,
188
+ iteration: this.iteration,
189
+ timestamp: Date.now(),
190
+ });
191
+ }
192
+ }
193
+ return knowledgeItems;
194
+ }
195
+ /**
196
+ * Check if answer is definitive
197
+ * Override in subclass or use LMReasoning
198
+ */
199
+ async isAnswerDefinitive() {
200
+ // Default implementation: check knowledge count
201
+ // Will be enhanced with LM reasoning in TSK-DR-010
202
+ const knowledgeCount = this.knowledge.size();
203
+ // Consider answer definitive if we have 10+ knowledge items
204
+ if (knowledgeCount >= 10) {
205
+ this.definitiveAnswer = this.knowledge.getSummary(5);
206
+ return true;
207
+ }
208
+ return false;
209
+ }
210
+ /**
211
+ * Generate final research report
212
+ */
213
+ async generateFinalReport() {
214
+ const durationMs = Date.now() - this.startTime;
215
+ const totalTokens = this.tokenTracker.getUsed();
216
+ console.log(`\n📊 Research completed in ${(durationMs / 1000).toFixed(2)}s`);
217
+ console.log(` Iterations: ${this.iteration}`);
218
+ console.log(` Tokens used: ${totalTokens}/${this.config.tokenBudget}`);
219
+ console.log(` Knowledge items: ${this.knowledge.size()}`);
220
+ const report = await this.reportGenerator.generate(this.config.query, this.knowledge, this.logger.getLogs(), {
221
+ totalTokens,
222
+ durationMs,
223
+ iterations: this.iteration,
224
+ });
225
+ return report;
226
+ }
227
+ /**
228
+ * Validate configuration
229
+ */
230
+ validateConfig(config) {
231
+ if (!config.query || config.query.trim().length === 0) {
232
+ throw new InvalidConfigurationError('Query is required');
233
+ }
234
+ if (config.maxIterations !== undefined && config.maxIterations <= 0) {
235
+ throw new InvalidConfigurationError('maxIterations must be positive');
236
+ }
237
+ if (config.tokenBudget !== undefined && config.tokenBudget <= 0) {
238
+ throw new InvalidConfigurationError('tokenBudget must be positive');
239
+ }
240
+ }
241
+ /**
242
+ * Get current knowledge base (for testing)
243
+ */
244
+ getKnowledge() {
245
+ return this.knowledge;
246
+ }
247
+ /**
248
+ * Get token tracker (for testing)
249
+ */
250
+ getTokenTracker() {
251
+ return this.tokenTracker;
252
+ }
253
+ /**
254
+ * Get trajectory logger (for testing)
255
+ */
256
+ getLogger() {
257
+ return this.logger;
258
+ }
259
+ }
260
+ //# sourceMappingURL=research-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research-engine.js","sourceRoot":"","sources":["../../src/engine/research-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export { ResearchEngine } from './engine/research-engine.js';
2
+ export { KnowledgeBase } from './knowledge/knowledge-base.js';
3
+ export { SearchProviderFactory, createSearchProviderFactory } from './providers/provider-factory.js';
4
+ export type { ProviderConfig } from './providers/provider-factory.js';
5
+ export { JinaProvider, createJinaProvider } from './providers/jina-provider.js';
6
+ export { BraveProvider, createBraveProvider } from './providers/brave-provider.js';
7
+ export { DuckDuckGoProvider, createDuckDuckGoProvider } from './providers/duckduckgo-provider.js';
8
+ export { LMReasoning, createLMReasoning } from './reasoning/lm-reasoning.js';
9
+ export type { LMProvider, LMGenerationOptions } from './reasoning/lm-reasoning.js';
10
+ export { VSCodeLMProvider, createVSCodeLMProvider } from './providers/vscode-lm-provider.js';
11
+ export { ExpertIntegration, createExpertIntegration } from './providers/expert-integration.js';
12
+ export { SecretManager } from './security/secret-manager.js';
13
+ export { ContentSanitizer } from './security/content-sanitizer.js';
14
+ export { SecureLogger } from './security/secure-logger.js';
15
+ export * from './performance/index.js';
16
+ export { TokenTracker } from './utils/token-tracker.js';
17
+ export { TrajectoryLogger } from './utils/trajectory-logger.js';
18
+ export { ReportGenerator } from './reporters/report-generator.js';
19
+ export * from './mcp/index.js';
20
+ export type * from './types/index.js';
21
+ export * from './types/errors.js';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACrG,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAGlG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAG/F,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,cAAc,wBAAwB,CAAC;AAGvC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,cAAc,gBAAgB,CAAC;AAa/B,mBAAmB,kBAAkB,CAAC;AAGtC,cAAc,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,30 @@
1
+ // Deep Research Integration - Public API
2
+ // Version: 3.4.0
3
+ // REQ: REQ-DR-CORE-001 through REQ-DR-NFR-006
4
+ // Core Engine
5
+ export { ResearchEngine } from './engine/research-engine.js';
6
+ export { KnowledgeBase } from './knowledge/knowledge-base.js';
7
+ // Providers
8
+ export { SearchProviderFactory, createSearchProviderFactory } from './providers/provider-factory.js';
9
+ export { JinaProvider, createJinaProvider } from './providers/jina-provider.js';
10
+ export { BraveProvider, createBraveProvider } from './providers/brave-provider.js';
11
+ export { DuckDuckGoProvider, createDuckDuckGoProvider } from './providers/duckduckgo-provider.js';
12
+ // Reasoning (TSK-DR-010~012)
13
+ export { LMReasoning, createLMReasoning } from './reasoning/lm-reasoning.js';
14
+ export { VSCodeLMProvider, createVSCodeLMProvider } from './providers/vscode-lm-provider.js';
15
+ export { ExpertIntegration, createExpertIntegration } from './providers/expert-integration.js';
16
+ // Security (TSK-DR-013~015)
17
+ export { SecretManager } from './security/secret-manager.js';
18
+ export { ContentSanitizer } from './security/content-sanitizer.js';
19
+ export { SecureLogger } from './security/secure-logger.js';
20
+ // Performance (TSK-DR-016~018)
21
+ export * from './performance/index.js';
22
+ // Utils
23
+ export { TokenTracker } from './utils/token-tracker.js';
24
+ export { TrajectoryLogger } from './utils/trajectory-logger.js';
25
+ export { ReportGenerator } from './reporters/report-generator.js';
26
+ // MCP Tools (TSK-DR-020)
27
+ export * from './mcp/index.js';
28
+ // Errors
29
+ export * from './types/errors.js';
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,iBAAiB;AACjB,8CAA8C;AAE9C,cAAc;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,YAAY;AACZ,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAErG,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAElG,6BAA6B;AAC7B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAE/F,4BAA4B;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,+BAA+B;AAC/B,cAAc,wBAAwB,CAAC;AAEvC,QAAQ;AACR,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,yBAAyB;AACzB,cAAc,gBAAgB,CAAC;AAe/B,SAAS;AACT,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,117 @@
1
+ import type { Entity, Relation, QueryFilter, SearchOptions, TraverseOptions } from '@musubix/knowledge';
2
+ /**
3
+ * Configuration for Knowledge Store integration
4
+ */
5
+ export interface KnowledgeStoreConfig {
6
+ /** Base path for knowledge storage (default: .knowledge) */
7
+ basePath?: string;
8
+ /** Auto-save on updates */
9
+ autoSave?: boolean;
10
+ /** Load on initialization */
11
+ autoLoad?: boolean;
12
+ }
13
+ /**
14
+ * Knowledge item from research
15
+ */
16
+ export interface KnowledgeItem {
17
+ content: string;
18
+ type: 'fact' | 'concept' | 'relation' | 'source';
19
+ confidence?: number;
20
+ iteration: number;
21
+ metadata?: Record<string, unknown>;
22
+ }
23
+ /**
24
+ * Storage result
25
+ */
26
+ export interface StorageResult {
27
+ entityId: string;
28
+ stored: boolean;
29
+ message?: string;
30
+ }
31
+ /**
32
+ * Query result with context
33
+ */
34
+ export interface KnowledgeQueryResult {
35
+ entities: Entity[];
36
+ relationCount: number;
37
+ depth: number;
38
+ }
39
+ /**
40
+ * Knowledge Store Integration
41
+ *
42
+ * Integrates Deep Research with @musubix/knowledge package
43
+ * for persistent knowledge graph storage.
44
+ *
45
+ * Features:
46
+ * - Store research results as entities
47
+ * - Query knowledge graph
48
+ * - Track relations between findings
49
+ * - Git-friendly JSON storage
50
+ * - Export/import knowledge base
51
+ */
52
+ export declare class KnowledgeStoreIntegration {
53
+ private store;
54
+ private config;
55
+ private entityCounter;
56
+ constructor(config?: KnowledgeStoreConfig);
57
+ /**
58
+ * Initialize the knowledge store
59
+ */
60
+ initialize(): Promise<void>;
61
+ /**
62
+ * Check if knowledge store is available
63
+ */
64
+ isAvailable(): Promise<boolean>;
65
+ /**
66
+ * Store a knowledge item from research
67
+ */
68
+ storeKnowledgeItem(item: KnowledgeItem, query: string): Promise<StorageResult>;
69
+ /**
70
+ * Query knowledge base
71
+ */
72
+ query(filter: QueryFilter): Promise<Entity[]>;
73
+ /**
74
+ * Search knowledge base by text
75
+ */
76
+ search(text: string, options?: SearchOptions): Promise<Entity[]>;
77
+ /**
78
+ * Get related entities (graph traversal)
79
+ */
80
+ getRelated(entityId: string, options?: TraverseOptions): Promise<KnowledgeQueryResult>;
81
+ /**
82
+ * Add relation between entities
83
+ */
84
+ addRelation(relation: Omit<Relation, 'id'>): Promise<void>;
85
+ /**
86
+ * Export knowledge base
87
+ */
88
+ export(): Promise<string>;
89
+ /**
90
+ * Get statistics
91
+ */
92
+ getStats(): {
93
+ entityCount: number;
94
+ relationCount: number;
95
+ };
96
+ /**
97
+ * Save knowledge store to disk
98
+ */
99
+ save(): Promise<void>;
100
+ /**
101
+ * Generate entity ID
102
+ */
103
+ private generateEntityId;
104
+ /**
105
+ * Extract title from content (first 50 chars)
106
+ */
107
+ private extractTitle;
108
+ /**
109
+ * Load @musubix/knowledge package dynamically
110
+ */
111
+ private loadKnowledge;
112
+ }
113
+ /**
114
+ * Factory function to create Knowledge Store integration
115
+ */
116
+ export declare function createKnowledgeStoreIntegration(config?: KnowledgeStoreConfig): KnowledgeStoreIntegration;
117
+ //# sourceMappingURL=knowledge-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-store.d.ts","sourceRoot":"","sources":["../../src/integration/knowledge-store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,MAAM,EACN,QAAQ,EAER,WAAW,EACX,aAAa,EACb,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAWD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,aAAa,CAAK;gBAEd,MAAM,CAAC,EAAE,oBAAoB;IAIzC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAWrC;;OAEG;IACG,kBAAkB,CACtB,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,CAAC;IA0CzB;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQnD;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQtE;;OAEG;IACG,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,oBAAoB,CAAC;IAehC;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBhE;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAmB/B;;OAEG;IACH,QAAQ,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IAQ1D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;YACW,aAAa;CAS5B;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,CAAC,EAAE,oBAAoB,GAC5B,yBAAyB,CAE3B"}