@lincoln504/pi-research 0.1.12 → 1.0.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 (248) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +64 -115
  3. package/dist/cli.mjs +23211 -0
  4. package/dist/prompts/research-knowledge-relevance-triage.md +35 -0
  5. package/dist/prompts/research-knowledge-search-extractor.md +41 -0
  6. package/dist/prompts/research-tool-usage.md +92 -0
  7. package/dist/prompts/researcher.md +89 -0
  8. package/dist/prompts/system-coordinator.md +75 -0
  9. package/dist/prompts/system-lead-evaluator.md +118 -0
  10. package/dist/thread-worker.mjs +2611 -0
  11. package/dist/webgpu-probe.mjs +80 -0
  12. package/docs/AGENT-SKILL.md +102 -0
  13. package/docs/ARCHITECTURE.md +306 -80
  14. package/docs/CONFIGURATION.md +249 -0
  15. package/docs/KNOWLEDGE-STORE.md +213 -0
  16. package/docs/PI-EXTENSION.md +91 -0
  17. package/docs/SDK.md +113 -0
  18. package/docs/THIRD-PARTY-NOTICES.md +64 -0
  19. package/package.json +102 -36
  20. package/scripts/build.cjs +140 -0
  21. package/scripts/cleanup.cjs +149 -0
  22. package/scripts/prepare.cjs +28 -0
  23. package/scripts/setup.cjs +134 -0
  24. package/skills/pi-research/README.md +90 -0
  25. package/skills/pi-research/SKILL.md +102 -0
  26. package/skills/pi-research/references/configuration.md +77 -0
  27. package/skills/pi-research/scripts/run.mjs +237 -0
  28. package/src/cleanup/research-cleanup.ts +140 -0
  29. package/src/cli.ts +1044 -0
  30. package/src/config.ts +1036 -147
  31. package/src/constants.ts +115 -84
  32. package/src/core/health-check-service.ts +265 -0
  33. package/src/core/interfaces/health-check-interfaces.ts +50 -0
  34. package/src/core/interfaces/knowledge-interfaces.ts +190 -0
  35. package/src/core/interfaces/observer-interfaces.ts +67 -0
  36. package/src/core/interfaces/orchestration-interfaces.ts +86 -0
  37. package/src/core/interfaces/planning-interfaces.ts +100 -0
  38. package/src/core/interfaces/process-interfaces.ts +37 -0
  39. package/src/core/interfaces/research-plan-types.ts +52 -0
  40. package/src/core/interfaces/scheduler-interfaces.ts +91 -0
  41. package/src/core/interfaces/service-names.ts +39 -0
  42. package/src/core/interfaces/state-manager-interfaces.ts +29 -0
  43. package/src/core/interfaces/steering-interfaces.ts +31 -0
  44. package/src/core/llm/agentic-repair.ts +169 -0
  45. package/src/core/llm/inject-date.ts +52 -0
  46. package/src/core/llm/llm-timeout.ts +64 -0
  47. package/src/core/llm/llm-utils.ts +86 -0
  48. package/src/core/llm/model-registry-factory.ts +287 -0
  49. package/src/core/llm/pi-ai-completion.ts +29 -0
  50. package/src/core/llm/prompts.ts +50 -0
  51. package/src/core/llm/research-model-resolver.ts +91 -0
  52. package/src/core/planning-constants.ts +13 -0
  53. package/src/core/planning-service.ts +649 -0
  54. package/src/core/planning-utils.ts +299 -0
  55. package/src/core/scheduler-factory.ts +48 -0
  56. package/src/core/scheduler-service.ts +123 -0
  57. package/src/core/service-initialization.ts +194 -0
  58. package/src/core/service-interfaces.ts +48 -0
  59. package/src/core/service-registry.ts +659 -0
  60. package/src/healthcheck/index.ts +271 -265
  61. package/src/healthcheck/registry.ts +130 -0
  62. package/src/index.ts +639 -50
  63. package/src/infrastructure/browser/browser-cleanup.ts +309 -0
  64. package/src/infrastructure/browser/browser-client.ts +199 -0
  65. package/src/infrastructure/browser/browser-error-utils.ts +160 -0
  66. package/src/infrastructure/browser/browser-lifecycle.ts +120 -0
  67. package/src/infrastructure/browser/browser-server.ts +174 -0
  68. package/src/infrastructure/browser/browser-task-scheduler.ts +461 -0
  69. package/src/infrastructure/browser/cleanup-utils.ts +155 -0
  70. package/src/infrastructure/browser/client-agent.ts +31 -0
  71. package/src/infrastructure/browser/config.ts +288 -0
  72. package/src/infrastructure/browser/ensure-browser.ts +205 -0
  73. package/src/infrastructure/browser/index.ts +37 -0
  74. package/src/infrastructure/browser/priority-task-queue.ts +226 -0
  75. package/src/infrastructure/browser/scheduler-factory.ts +354 -0
  76. package/src/infrastructure/browser/task-execution-service.ts +209 -0
  77. package/src/infrastructure/browser/thread-worker-browser.ts +282 -0
  78. package/src/infrastructure/browser/thread-worker-lifecycle.ts +323 -0
  79. package/src/infrastructure/browser/thread-worker-messaging.ts +662 -0
  80. package/src/infrastructure/browser/thread-worker-types.ts +25 -0
  81. package/src/infrastructure/browser/thread-worker.mjs +2611 -0
  82. package/src/infrastructure/browser/thread-worker.ts +168 -0
  83. package/src/infrastructure/browser/worker-pool-manager.ts +449 -0
  84. package/src/infrastructure/embedding/embedding-client.ts +205 -0
  85. package/src/infrastructure/embedding/embedding-factory.ts +324 -0
  86. package/src/infrastructure/embedding/embedding-server.ts +535 -0
  87. package/src/infrastructure/file-lock-service.ts +592 -0
  88. package/src/infrastructure/gpu-resource-service.ts +191 -0
  89. package/src/infrastructure/knowledge-store-service.ts +475 -0
  90. package/src/infrastructure/metrics-service.ts +129 -0
  91. package/src/infrastructure/process-lifecycle-service.ts +253 -0
  92. package/src/infrastructure/scheduler-factory-service.ts +58 -0
  93. package/src/infrastructure/service-initialization.ts +292 -0
  94. package/src/infrastructure/state/state-backup-manager.ts +290 -0
  95. package/src/infrastructure/state/state-browser-api.ts +62 -0
  96. package/src/infrastructure/state/state-browser-manager.ts +70 -0
  97. package/src/infrastructure/state/state-manager-service.ts +264 -0
  98. package/src/infrastructure/state/state-manager.ts +547 -0
  99. package/src/infrastructure/state/state-metrics.ts +92 -0
  100. package/src/infrastructure/state/state-migration.ts +103 -0
  101. package/src/infrastructure/state/state-path-configuration.ts +119 -0
  102. package/src/infrastructure/state/state-session-api.ts +94 -0
  103. package/src/infrastructure/state/state-session-manager.ts +127 -0
  104. package/src/infrastructure/state/state-validator.ts +93 -0
  105. package/src/infrastructure/types/state-types.ts +85 -0
  106. package/src/knowledge/chunker.ts +157 -0
  107. package/src/knowledge/embedder-init.ts +413 -0
  108. package/src/knowledge/embedder-utils.ts +296 -0
  109. package/src/knowledge/embedder.ts +592 -0
  110. package/src/knowledge/index.ts +126 -0
  111. package/src/knowledge/lancedb-loader.ts +35 -0
  112. package/src/knowledge/migration.ts +17 -0
  113. package/src/knowledge/model-config.ts +132 -0
  114. package/src/knowledge/onnx-env.ts +48 -0
  115. package/src/knowledge/store-operations.ts +291 -0
  116. package/src/knowledge/store-schema.ts +79 -0
  117. package/src/knowledge/store.ts +1251 -0
  118. package/src/knowledge/transformers-loader.ts +31 -0
  119. package/src/knowledge/webgpu-probe.mjs +80 -0
  120. package/src/knowledge/webgpu-viability.ts +255 -0
  121. package/src/knowledge/writer-queue.ts +252 -0
  122. package/src/logger.ts +316 -122
  123. package/src/observers/research-observer-impl.ts +459 -0
  124. package/src/orchestration/deep-research-orchestrator.ts +524 -773
  125. package/src/orchestration/deep-research-types.ts +47 -35
  126. package/src/orchestration/headless-observer.ts +114 -0
  127. package/src/orchestration/orchestration-types.ts +33 -0
  128. package/src/orchestration/quick-research-orchestrator.ts +463 -0
  129. package/src/orchestration/research-orchestration-service.ts +549 -0
  130. package/src/orchestration/research-session-service.ts +178 -0
  131. package/src/orchestration/research-synthesis-service.ts +348 -0
  132. package/src/orchestration/researcher-executor.ts +394 -0
  133. package/src/orchestration/researcher.ts +115 -42
  134. package/src/orchestration/service-initialization.ts +109 -0
  135. package/src/orchestration/session-context.ts +7 -3
  136. package/src/orchestration/session-state.ts +672 -0
  137. package/src/prompts/research-knowledge-relevance-triage.md +35 -0
  138. package/src/prompts/research-knowledge-search-extractor.md +41 -0
  139. package/src/prompts/research-tool-usage.md +63 -16
  140. package/src/prompts/researcher.md +59 -136
  141. package/src/prompts/system-coordinator.md +64 -13
  142. package/src/prompts/system-lead-evaluator.md +82 -189
  143. package/src/research-config.ts +872 -0
  144. package/src/sdk.ts +847 -0
  145. package/src/security/cisa-kev.ts +72 -9
  146. package/src/security/cvss.ts +92 -0
  147. package/src/security/ecosystem.ts +45 -0
  148. package/src/security/github-advisories.ts +168 -428
  149. package/src/security/github-advisory-types.ts +282 -0
  150. package/src/security/index.ts +63 -177
  151. package/src/security/nvd-client.ts +550 -0
  152. package/src/security/nvd-types.ts +179 -0
  153. package/src/security/osv-client.ts +246 -0
  154. package/src/security/osv-types.ts +285 -0
  155. package/src/security/types.ts +67 -53
  156. package/src/skill-install/skill-installer.ts +519 -0
  157. package/src/stackexchange/index.ts +81 -27
  158. package/src/stackexchange/output/compact.ts +7 -6
  159. package/src/stackexchange/output/table.ts +11 -7
  160. package/src/stackexchange/queries.ts +0 -10
  161. package/src/stackexchange/rest-client.ts +141 -66
  162. package/src/stackexchange/types.ts +0 -17
  163. package/src/tool.ts +15 -423
  164. package/src/tools/grep.ts +32 -310
  165. package/src/tools/health-tool-definition.ts +101 -0
  166. package/src/tools/index.ts +38 -9
  167. package/src/tools/research-knowledge-search.ts +974 -0
  168. package/src/tools/research-knowledge-types.ts +77 -0
  169. package/src/tools/research-tool-definition.ts +494 -0
  170. package/src/tools/scrape.ts +286 -388
  171. package/src/tools/search.ts +98 -153
  172. package/src/tools/security.ts +107 -80
  173. package/src/tools/stackexchange.ts +58 -35
  174. package/src/tools/youtube-transcript.ts +163 -0
  175. package/src/tui/knowledge-search-panel.ts +86 -0
  176. package/src/tui/pulse.ts +86 -0
  177. package/src/tui/research-health.ts +124 -0
  178. package/src/tui/research-panel-color-utils.ts +340 -0
  179. package/src/tui/research-panel-format.ts +54 -0
  180. package/src/tui/research-panel-state.ts +404 -0
  181. package/src/tui/research-panel-wave.ts +280 -0
  182. package/src/tui/research-panel.ts +339 -435
  183. package/src/tui/research-tui-manager.ts +233 -0
  184. package/src/tui/tui-controller.ts +137 -0
  185. package/src/types/extension-context.ts +18 -49
  186. package/src/types/index.ts +61 -0
  187. package/src/types/llm.ts +68 -29
  188. package/src/types/research-panel-types.ts +61 -0
  189. package/src/utils/circuit-breaker.ts +146 -0
  190. package/src/utils/citation-utils.ts +97 -0
  191. package/src/utils/disk-space-checker.ts +55 -0
  192. package/src/utils/error-tracker.ts +265 -0
  193. package/src/utils/host-config.ts +45 -0
  194. package/src/utils/input-validation.ts +8 -10
  195. package/src/utils/json-utils.ts +150 -16
  196. package/src/utils/llm-usage.ts +54 -0
  197. package/src/utils/log-rotation.ts +125 -0
  198. package/src/utils/log-utils.ts +159 -0
  199. package/src/utils/make-resource-loader.ts +3 -1
  200. package/src/utils/metrics-summary.ts +459 -0
  201. package/src/utils/metrics.ts +302 -0
  202. package/src/utils/research-export.ts +28 -12
  203. package/src/utils/safe-unref.ts +31 -0
  204. package/src/utils/shared-links.ts +195 -90
  205. package/src/utils/shutdown-manager.ts +65 -0
  206. package/src/utils/stdio-capture.ts +407 -0
  207. package/src/utils/text-utils.ts +264 -7
  208. package/src/utils/tool-usage-tracker.ts +83 -16
  209. package/src/utils/url-utils.ts +255 -0
  210. package/src/utils/user-agent.ts +28 -0
  211. package/src/web-research/browser-search.ts +179 -0
  212. package/src/web-research/retry-utils.ts +173 -77
  213. package/src/web-research/scraper-types.ts +72 -0
  214. package/src/web-research/scraper-utils.ts +434 -0
  215. package/src/web-research/search.ts +78 -218
  216. package/src/web-research/types.ts +9 -24
  217. package/src/web-research/utils.ts +2 -143
  218. package/src/web-research/web-scraper.ts +477 -0
  219. package/src/youtube/index.ts +154 -0
  220. package/src/youtube/potoken.ts +259 -0
  221. package/src/youtube/transcript-client.ts +390 -0
  222. package/src/youtube/video-id.ts +118 -0
  223. package/config/searxng/default-settings.yml +0 -189
  224. package/config/searxng/limiter.toml +0 -34
  225. package/config/tooling/eslint.config.js +0 -73
  226. package/config/tooling/vitest.config.integration.ts +0 -17
  227. package/config/tooling/vitest.config.ts +0 -40
  228. package/config/tooling/vitest.config.unit.ts +0 -12
  229. package/docs/assets/README-banner.jpg +0 -0
  230. package/scripts/setup.js +0 -174
  231. package/src/infrastructure/searxng-lifecycle.ts +0 -577
  232. package/src/infrastructure/searxng-manager.ts +0 -1183
  233. package/src/infrastructure/state-manager.ts +0 -918
  234. package/src/orchestration/deep-research-reducer.ts +0 -129
  235. package/src/orchestration/id-utils.ts +0 -63
  236. package/src/security/nvd.ts +0 -532
  237. package/src/security/osv.ts +0 -487
  238. package/src/stackexchange/cache.ts +0 -111
  239. package/src/stackexchange/output/index.ts +0 -7
  240. package/src/stackexchange/output/json.ts +0 -21
  241. package/src/tui/searxng-status.ts +0 -80
  242. package/src/utils/inject-date.ts +0 -29
  243. package/src/utils/research-error.ts +0 -205
  244. package/src/utils/searxng-config.ts +0 -94
  245. package/src/utils/session-state.ts +0 -295
  246. package/src/web-research/dependencies.ts +0 -20
  247. package/src/web-research/scrapers.ts +0 -935
  248. package/tsconfig.json +0 -40
@@ -4,51 +4,63 @@
4
4
  * Defines the schema for the monolithic ResearchState persisted in the session tree.
5
5
  */
6
6
 
7
- export type ResearchStatus = 'planning' | 'researching' | 'evaluating' | 'synthesizing' | 'completed' | 'failed';
8
- export type SiblingStatus = 'pending' | 'running' | 'completed' | 'failed';
7
+ import { Type, type Static } from 'typebox';
9
8
 
10
- export type DeepResearchEvent =
11
- | { type: 'PLANNING_COMPLETE'; agenda: string[]; initialCount: number }
12
- | { type: 'SIBLING_STARTED'; id: string }
13
- | { type: 'SIBLING_COMPLETED'; id: string; report: string }
14
- | { type: 'SIBLING_FAILED'; id: string; error: string }
15
- | { type: 'LINKS_SCRAPED'; links: string[] }
16
- | { type: 'PROMOTION_STARTED'; id: string }
17
- | { type: 'PROMOTION_DECISION'; nextQueries: string[]; finalSynthesis?: string; maxRounds: number }
18
- | { type: 'SIBLING_TOKENS'; id: string; tokens: number; cost: number };
9
+ export const ResearchStatusSchema = Type.Union([
10
+ Type.Literal('planning'),
11
+ Type.Literal('researching'),
12
+ Type.Literal('evaluating'),
13
+ Type.Literal('synthesizing'),
14
+ Type.Literal('completed'),
15
+ Type.Literal('failed')
16
+ ]);
19
17
 
20
- export interface ResearchSibling {
21
- id: string; // e.g. "1.1", "2.1"
22
- query: string;
23
- status: SiblingStatus;
24
- report?: string;
25
- error?: string;
26
- tokens?: number;
27
- cost?: number;
28
- }
18
+ export const SiblingStatusSchema = Type.Union([
19
+ Type.Literal('pending'),
20
+ Type.Literal('running'),
21
+ Type.Literal('completed'),
22
+ Type.Literal('failed')
23
+ ]);
29
24
 
30
- export interface SystemResearchState {
31
- version: number;
32
- rootQuery: string;
33
- complexity: 1 | 2 | 3; // 1: Normal, 2: Deep, 3: Ultra
34
- currentRound: number;
35
- status: ResearchStatus;
36
- lastUpdated: number;
25
+ /**
26
+ * Individual research researcher (sibling) schema
27
+ */
28
+ export const ResearchSiblingSchema = Type.Object({
29
+ id: Type.String(), // e.g. "1.1", "2.1"
30
+ query: Type.String(),
31
+ status: SiblingStatusSchema,
32
+ report: Type.Optional(Type.String()),
33
+ error: Type.Optional(Type.String()),
34
+ tokens: Type.Optional(Type.Number()),
35
+ cost: Type.Optional(Type.Number()),
36
+ });
37
+
38
+ /**
39
+ * Main deep research state schema
40
+ */
41
+ export const SystemResearchStateSchema = Type.Object({
42
+ version: Type.Number(),
43
+ researchId: Type.String(), // Unique session ID
44
+ rootQuery: Type.String(),
45
+ complexity: Type.Union([Type.Literal(1), Type.Literal(2), Type.Literal(3)]), // 1: Normal, 2: Deep, 3: Ultra
46
+ currentRound: Type.Number(),
47
+ status: ResearchStatusSchema,
48
+ lastUpdated: Type.Number(),
37
49
 
38
50
  // The full exhaustive list of aspects planned by the initial coordinator
39
- initialAgenda: string[];
51
+ initialAgenda: Type.Array(Type.String()),
40
52
 
41
53
  // Global pool updated IMMEDIATELY by the scrape tool
42
- allScrapedLinks: string[];
54
+ allScrapedLinks: Type.Array(Type.String()),
43
55
 
44
56
  // Sequence of research aspects actively being worked or completed
45
- aspects: {
46
- [id: string]: ResearchSibling;
47
- };
57
+ aspects: Type.Record(Type.String(), ResearchSiblingSchema),
48
58
 
49
59
  // Track who was promoted to Lead Evaluator in this round to prevent race conditions
50
- promotedId?: string;
60
+ promotedId: Type.Optional(Type.String()),
51
61
 
52
62
  // Final result if completed
53
- finalSynthesis?: string;
54
- }
63
+ finalSynthesis: Type.Optional(Type.String()),
64
+ });
65
+
66
+ export type SystemResearchState = Static<typeof SystemResearchStateSchema>;
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Headless Research Observer
3
+ *
4
+ * A clean implementation of the ResearchObserver interface that forwards
5
+ * events to callbacks or logs them, rather than updating a TUI.
6
+ * Ideal for programmatic SDK use.
7
+ */
8
+
9
+ import { logger } from '../logger.ts';
10
+ import type { ResearchObserver, HeadlessObserverOptions } from '../core/interfaces/observer-interfaces.ts';
11
+ import type { ResearchPlan } from '../core/interfaces/research-plan-types.ts';
12
+
13
+ export type { HeadlessObserverOptions };
14
+
15
+ export class HeadlessObserver implements ResearchObserver {
16
+ constructor(private options: HeadlessObserverOptions = {}) {}
17
+
18
+ private emit(event: string, data?: any) {
19
+ if (this.options.enableLogging) {
20
+ logger.debug(`[HeadlessObserver] ${event}`, data);
21
+ }
22
+ // User-supplied SDK callback: a throw must not propagate into research
23
+ // event dispatch (same isolation TuiPulse applies to its subscribers).
24
+ try {
25
+ this.options.onProgress?.(event, data);
26
+ } catch (err) {
27
+ logger.debug('[HeadlessObserver] onProgress callback threw:', err);
28
+ }
29
+ }
30
+
31
+ onStart(query: string, complexity: number): void {
32
+ this.emit('start', { query, complexity });
33
+ }
34
+
35
+ onPlanningStart(attempt: number): void {
36
+ this.emit('planning_start', { attempt });
37
+ }
38
+
39
+ onPlanningProgress(status: string): void {
40
+ this.emit('planning_progress', { status });
41
+ }
42
+
43
+ onPlanningTokens(tokens: number, cost: number): void {
44
+ this.emit('planning_tokens', { tokens, cost });
45
+ }
46
+
47
+ onPlanningSuccess(plan: ResearchPlan): void {
48
+ this.emit('planning_success', { plan });
49
+ }
50
+
51
+ onRoundStart(round: number): void {
52
+ this.emit('round_start', { round });
53
+ }
54
+
55
+ onSearchStart(queries: string[]): void {
56
+ this.emit('search_start', { queries });
57
+ }
58
+
59
+ onSearchProgress(resultsCount: number): void {
60
+ this.emit('search_progress', { resultsCount });
61
+ }
62
+
63
+ onSearchComplete(resultsCount: number): void {
64
+ this.emit('search_complete', { resultsCount });
65
+ }
66
+
67
+ onResearcherStart(id: string, name: string, goal: string, roundNumber?: number): void {
68
+ this.emit('researcher_start', { id, name, goal, roundNumber });
69
+ }
70
+
71
+ onResearcherProgress(id: string, status?: string, tokens?: number, cost?: number): void {
72
+ this.emit('researcher_progress', { id, status, tokens, cost });
73
+ }
74
+
75
+ onResearcherComplete(id: string, report: string): void {
76
+ this.emit('researcher_complete', { id, report });
77
+ }
78
+
79
+ onResearcherFailure(id: string, error: string): void {
80
+ this.emit('researcher_failure', { id, error });
81
+ }
82
+
83
+ onToolResult(researcherId: string, success: boolean): void {
84
+ this.emit('tool_result', { researcherId, success });
85
+ }
86
+
87
+ onEvaluationStart(round: number): void {
88
+ this.emit('evaluation_start', { round });
89
+ }
90
+
91
+ onEvaluationProgress(status: string): void {
92
+ this.emit('evaluation_progress', { status });
93
+ }
94
+
95
+ onEvaluationTokens(tokens: number, cost: number): void {
96
+ this.emit('evaluation_tokens', { tokens, cost });
97
+ }
98
+
99
+ onEvaluationDecision(action: 'synthesize' | 'delegate', plan?: ResearchPlan, round?: number): void {
100
+ this.emit('evaluation_decision', { action, plan, round });
101
+ }
102
+
103
+ onComplete(result: string): void {
104
+ this.emit('complete', { result });
105
+ }
106
+
107
+ onError(error: Error): void {
108
+ this.emit('error', { message: error.message });
109
+ }
110
+
111
+ onTokensConsumed(tokens: number, cost: number): void {
112
+ this.emit('tokens_consumed', { tokens, cost });
113
+ }
114
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Research Orchestration Types
3
+ */
4
+
5
+ import type { ExtensionContext } from '@earendil-works/pi-coding-agent';
6
+ import type { Model } from '@earendil-works/pi-ai';
7
+ import type { ResearcherConfig } from '../core/service-interfaces.ts';
8
+ import type { IPlanningService } from '../core/interfaces/planning-interfaces.ts';
9
+ import type { StoreUrlEntry } from '../core/interfaces/knowledge-interfaces.ts';
10
+ import type { Config } from '../config.ts';
11
+ import type { ResearchObserver } from '../core/interfaces/observer-interfaces.ts';
12
+ export type { RunResearchersOptions } from '../core/interfaces/orchestration-interfaces.ts';
13
+
14
+ /**
15
+ * Options for running a single researcher
16
+ */
17
+ export interface RunResearcherOptions {
18
+ config: ResearcherConfig;
19
+ initialLinks: string[];
20
+ historicalUrls: StoreUrlEntry[];
21
+ sessionId: string;
22
+ researchId: string;
23
+ round: number;
24
+ query: string;
25
+ complexity: 1 | 2 | 3;
26
+ ctx: ExtensionContext;
27
+ model: Model<any>;
28
+ researchConfig: Config;
29
+ planningService: IPlanningService;
30
+ observer?: ResearchObserver;
31
+ signal?: AbortSignal;
32
+ excludeTools?: string[];
33
+ }