@staticn0va/wigolo 0.1.0 → 0.1.2

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 (1003) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +146 -227
  3. package/SKILL.md +382 -0
  4. package/assets/blocks/claude-code/CLAUDE.md.block +20 -0
  5. package/assets/blocks/claude-code/wigolo-command.md +40 -0
  6. package/assets/blocks/cursor/wigolo.mdc +46 -0
  7. package/assets/blocks/gemini-cli/GEMINI.md.block +18 -0
  8. package/assets/blocks/vscode/copilot-instructions.md.block +18 -0
  9. package/assets/skills/wigolo/SKILL.md +50 -0
  10. package/assets/skills/wigolo/rules/cache-first.md +30 -0
  11. package/assets/skills/wigolo/rules/synthesis.md +43 -0
  12. package/assets/skills/wigolo-agent/SKILL.md +73 -0
  13. package/assets/skills/wigolo-crawl/SKILL.md +60 -0
  14. package/assets/skills/wigolo-extract/SKILL.md +59 -0
  15. package/assets/skills/wigolo-fetch/SKILL.md +65 -0
  16. package/assets/skills/wigolo-find-similar/SKILL.md +72 -0
  17. package/assets/skills/wigolo-research/SKILL.md +77 -0
  18. package/assets/skills/wigolo-search/SKILL.md +78 -0
  19. package/dist/agent/executor.d.ts +33 -0
  20. package/dist/agent/executor.d.ts.map +1 -0
  21. package/dist/agent/executor.js +233 -0
  22. package/dist/agent/executor.js.map +1 -0
  23. package/dist/agent/pipeline.d.ts +5 -0
  24. package/dist/agent/pipeline.d.ts.map +1 -0
  25. package/dist/agent/pipeline.js +238 -0
  26. package/dist/agent/pipeline.js.map +1 -0
  27. package/dist/agent/planner.d.ts +13 -0
  28. package/dist/agent/planner.d.ts.map +1 -0
  29. package/dist/agent/planner.js +271 -0
  30. package/dist/agent/planner.js.map +1 -0
  31. package/dist/agent/relevance.d.ts +15 -0
  32. package/dist/agent/relevance.d.ts.map +1 -0
  33. package/dist/agent/relevance.js +60 -0
  34. package/dist/agent/relevance.js.map +1 -0
  35. package/dist/cache/backfill-embeddings.d.ts +23 -0
  36. package/dist/cache/backfill-embeddings.d.ts.map +1 -0
  37. package/dist/cache/backfill-embeddings.js +105 -0
  38. package/dist/cache/backfill-embeddings.js.map +1 -0
  39. package/dist/cache/change-detector.d.ts +7 -0
  40. package/dist/cache/change-detector.d.ts.map +1 -0
  41. package/dist/cache/change-detector.js +43 -0
  42. package/dist/cache/change-detector.js.map +1 -0
  43. package/dist/cache/db.d.ts +1 -0
  44. package/dist/cache/db.d.ts.map +1 -1
  45. package/dist/cache/db.js +94 -22
  46. package/dist/cache/db.js.map +1 -1
  47. package/dist/cache/diff-summary.d.ts +2 -0
  48. package/dist/cache/diff-summary.d.ts.map +1 -0
  49. package/dist/cache/diff-summary.js +82 -0
  50. package/dist/cache/diff-summary.js.map +1 -0
  51. package/dist/cache/migrations/runner.d.ts +29 -0
  52. package/dist/cache/migrations/runner.d.ts.map +1 -0
  53. package/dist/cache/migrations/runner.js +147 -0
  54. package/dist/cache/migrations/runner.js.map +1 -0
  55. package/dist/cache/sqlite-vec-store.d.ts +42 -0
  56. package/dist/cache/sqlite-vec-store.d.ts.map +1 -0
  57. package/dist/cache/sqlite-vec-store.js +176 -0
  58. package/dist/cache/sqlite-vec-store.js.map +1 -0
  59. package/dist/cache/store.d.ts +47 -1
  60. package/dist/cache/store.d.ts.map +1 -1
  61. package/dist/cache/store.js +364 -168
  62. package/dist/cache/store.js.map +1 -1
  63. package/dist/cli/agents/antigravity.d.ts +20 -0
  64. package/dist/cli/agents/antigravity.d.ts.map +1 -0
  65. package/dist/cli/agents/antigravity.js +49 -0
  66. package/dist/cli/agents/antigravity.js.map +1 -0
  67. package/dist/cli/agents/claude-code.d.ts +25 -0
  68. package/dist/cli/agents/claude-code.d.ts.map +1 -0
  69. package/dist/cli/agents/claude-code.js +111 -0
  70. package/dist/cli/agents/claude-code.js.map +1 -0
  71. package/dist/cli/agents/cursor.d.ts +21 -0
  72. package/dist/cli/agents/cursor.d.ts.map +1 -0
  73. package/dist/cli/agents/cursor.js +58 -0
  74. package/dist/cli/agents/cursor.js.map +1 -0
  75. package/dist/cli/agents/gemini-cli.d.ts +21 -0
  76. package/dist/cli/agents/gemini-cli.d.ts.map +1 -0
  77. package/dist/cli/agents/gemini-cli.js +55 -0
  78. package/dist/cli/agents/gemini-cli.js.map +1 -0
  79. package/dist/cli/agents/registry.d.ts +21 -0
  80. package/dist/cli/agents/registry.d.ts.map +1 -0
  81. package/dist/cli/agents/registry.js +27 -0
  82. package/dist/cli/agents/registry.js.map +1 -0
  83. package/dist/cli/agents/utils.d.ts +26 -0
  84. package/dist/cli/agents/utils.d.ts.map +1 -0
  85. package/dist/cli/agents/utils.js +136 -0
  86. package/dist/cli/agents/utils.js.map +1 -0
  87. package/dist/cli/agents/vscode.d.ts +21 -0
  88. package/dist/cli/agents/vscode.d.ts.map +1 -0
  89. package/dist/cli/agents/vscode.js +62 -0
  90. package/dist/cli/agents/vscode.js.map +1 -0
  91. package/dist/cli/auth.d.ts +2 -0
  92. package/dist/cli/auth.d.ts.map +1 -0
  93. package/dist/cli/auth.js +94 -0
  94. package/dist/cli/auth.js.map +1 -0
  95. package/dist/cli/backfill.d.ts +2 -0
  96. package/dist/cli/backfill.d.ts.map +1 -0
  97. package/dist/cli/backfill.js +58 -0
  98. package/dist/cli/backfill.js.map +1 -0
  99. package/dist/cli/daemon.d.ts +6 -1
  100. package/dist/cli/daemon.d.ts.map +1 -1
  101. package/dist/cli/daemon.js +61 -3
  102. package/dist/cli/daemon.js.map +1 -1
  103. package/dist/cli/doctor.d.ts +8 -0
  104. package/dist/cli/doctor.d.ts.map +1 -0
  105. package/dist/cli/doctor.js +344 -0
  106. package/dist/cli/doctor.js.map +1 -0
  107. package/dist/cli/health.d.ts +1 -1
  108. package/dist/cli/health.d.ts.map +1 -1
  109. package/dist/cli/health.js +42 -3
  110. package/dist/cli/health.js.map +1 -1
  111. package/dist/cli/help.d.ts +6 -0
  112. package/dist/cli/help.d.ts.map +1 -0
  113. package/dist/cli/help.js +63 -0
  114. package/dist/cli/help.js.map +1 -0
  115. package/dist/cli/index.d.ts +1 -1
  116. package/dist/cli/index.d.ts.map +1 -1
  117. package/dist/cli/index.js +35 -7
  118. package/dist/cli/index.js.map +1 -1
  119. package/dist/cli/init.d.ts +2 -0
  120. package/dist/cli/init.d.ts.map +1 -0
  121. package/dist/cli/init.js +201 -0
  122. package/dist/cli/init.js.map +1 -0
  123. package/dist/cli/plugin.d.ts +5 -0
  124. package/dist/cli/plugin.d.ts.map +1 -0
  125. package/dist/cli/plugin.js +185 -0
  126. package/dist/cli/plugin.js.map +1 -0
  127. package/dist/cli/setup-mcp.d.ts +2 -0
  128. package/dist/cli/setup-mcp.d.ts.map +1 -0
  129. package/dist/cli/setup-mcp.js +114 -0
  130. package/dist/cli/setup-mcp.js.map +1 -0
  131. package/dist/cli/shell.d.ts +2 -0
  132. package/dist/cli/shell.d.ts.map +1 -0
  133. package/dist/cli/shell.js +86 -0
  134. package/dist/cli/shell.js.map +1 -0
  135. package/dist/cli/shutdown.d.ts +2 -0
  136. package/dist/cli/shutdown.d.ts.map +1 -0
  137. package/dist/cli/shutdown.js +26 -0
  138. package/dist/cli/shutdown.js.map +1 -0
  139. package/dist/cli/status.d.ts +2 -0
  140. package/dist/cli/status.d.ts.map +1 -0
  141. package/dist/cli/status.js +31 -0
  142. package/dist/cli/status.js.map +1 -0
  143. package/dist/cli/telemetry.d.ts +10 -0
  144. package/dist/cli/telemetry.d.ts.map +1 -0
  145. package/dist/cli/telemetry.js +56 -0
  146. package/dist/cli/telemetry.js.map +1 -0
  147. package/dist/cli/tui/agents-types.d.ts +28 -0
  148. package/dist/cli/tui/agents-types.d.ts.map +1 -0
  149. package/dist/cli/tui/agents-types.js +1 -0
  150. package/dist/cli/tui/agents-types.js.map +1 -0
  151. package/dist/cli/tui/agents.d.ts +11 -0
  152. package/dist/cli/tui/agents.d.ts.map +1 -0
  153. package/dist/cli/tui/agents.js +93 -0
  154. package/dist/cli/tui/agents.js.map +1 -0
  155. package/dist/cli/tui/banner.d.ts +3 -0
  156. package/dist/cli/tui/banner.d.ts.map +1 -0
  157. package/dist/cli/tui/banner.js +30 -0
  158. package/dist/cli/tui/banner.js.map +1 -0
  159. package/dist/cli/tui/components/AgentSelect.d.ts +13 -0
  160. package/dist/cli/tui/components/AgentSelect.d.ts.map +1 -0
  161. package/dist/cli/tui/components/AgentSelect.js +116 -0
  162. package/dist/cli/tui/components/AgentSelect.js.map +1 -0
  163. package/dist/cli/tui/components/Banner.d.ts +6 -0
  164. package/dist/cli/tui/components/Banner.d.ts.map +1 -0
  165. package/dist/cli/tui/components/Banner.js +25 -0
  166. package/dist/cli/tui/components/Banner.js.map +1 -0
  167. package/dist/cli/tui/components/BrowserSelect.d.ts +7 -0
  168. package/dist/cli/tui/components/BrowserSelect.d.ts.map +1 -0
  169. package/dist/cli/tui/components/BrowserSelect.js +19 -0
  170. package/dist/cli/tui/components/BrowserSelect.js.map +1 -0
  171. package/dist/cli/tui/components/InstallProgress.d.ts +9 -0
  172. package/dist/cli/tui/components/InstallProgress.d.ts.map +1 -0
  173. package/dist/cli/tui/components/InstallProgress.js +67 -0
  174. package/dist/cli/tui/components/InstallProgress.js.map +1 -0
  175. package/dist/cli/tui/components/SkillInstall.d.ts +14 -0
  176. package/dist/cli/tui/components/SkillInstall.d.ts.map +1 -0
  177. package/dist/cli/tui/components/SkillInstall.js +94 -0
  178. package/dist/cli/tui/components/SkillInstall.js.map +1 -0
  179. package/dist/cli/tui/components/Summary.d.ts +22 -0
  180. package/dist/cli/tui/components/Summary.d.ts.map +1 -0
  181. package/dist/cli/tui/components/Summary.js +135 -0
  182. package/dist/cli/tui/components/Summary.js.map +1 -0
  183. package/dist/cli/tui/components/SystemCheck.d.ts +8 -0
  184. package/dist/cli/tui/components/SystemCheck.d.ts.map +1 -0
  185. package/dist/cli/tui/components/SystemCheck.js +71 -0
  186. package/dist/cli/tui/components/SystemCheck.js.map +1 -0
  187. package/dist/cli/tui/components/Verification.d.ts +8 -0
  188. package/dist/cli/tui/components/Verification.d.ts.map +1 -0
  189. package/dist/cli/tui/components/Verification.js +63 -0
  190. package/dist/cli/tui/components/Verification.js.map +1 -0
  191. package/dist/cli/tui/config-writer-cli.d.ts +12 -0
  192. package/dist/cli/tui/config-writer-cli.d.ts.map +1 -0
  193. package/dist/cli/tui/config-writer-cli.js +39 -0
  194. package/dist/cli/tui/config-writer-cli.js.map +1 -0
  195. package/dist/cli/tui/config-writer-json.d.ts +16 -0
  196. package/dist/cli/tui/config-writer-json.d.ts.map +1 -0
  197. package/dist/cli/tui/config-writer-json.js +86 -0
  198. package/dist/cli/tui/config-writer-json.js.map +1 -0
  199. package/dist/cli/tui/config-writer-toml.d.ts +16 -0
  200. package/dist/cli/tui/config-writer-toml.d.ts.map +1 -0
  201. package/dist/cli/tui/config-writer-toml.js +83 -0
  202. package/dist/cli/tui/config-writer-toml.js.map +1 -0
  203. package/dist/cli/tui/config-writer.d.ts +25 -0
  204. package/dist/cli/tui/config-writer.d.ts.map +1 -0
  205. package/dist/cli/tui/config-writer.js +101 -0
  206. package/dist/cli/tui/config-writer.js.map +1 -0
  207. package/dist/cli/tui/detect-helpers.d.ts +6 -0
  208. package/dist/cli/tui/detect-helpers.d.ts.map +1 -0
  209. package/dist/cli/tui/detect-helpers.js +45 -0
  210. package/dist/cli/tui/detect-helpers.js.map +1 -0
  211. package/dist/cli/tui/extras-prompt.d.ts +7 -0
  212. package/dist/cli/tui/extras-prompt.d.ts.map +1 -0
  213. package/dist/cli/tui/extras-prompt.js +42 -0
  214. package/dist/cli/tui/extras-prompt.js.map +1 -0
  215. package/dist/cli/tui/flags-types.d.ts +19 -0
  216. package/dist/cli/tui/flags-types.d.ts.map +1 -0
  217. package/dist/cli/tui/flags-types.js +23 -0
  218. package/dist/cli/tui/flags-types.js.map +1 -0
  219. package/dist/cli/tui/flags.d.ts +5 -0
  220. package/dist/cli/tui/flags.d.ts.map +1 -0
  221. package/dist/cli/tui/flags.js +132 -0
  222. package/dist/cli/tui/flags.js.map +1 -0
  223. package/dist/cli/tui/format.d.ts +14 -0
  224. package/dist/cli/tui/format.d.ts.map +1 -0
  225. package/dist/cli/tui/format.js +37 -0
  226. package/dist/cli/tui/format.js.map +1 -0
  227. package/dist/cli/tui/hooks/useAgentDetect.d.ts +6 -0
  228. package/dist/cli/tui/hooks/useAgentDetect.d.ts.map +1 -0
  229. package/dist/cli/tui/hooks/useAgentDetect.js +19 -0
  230. package/dist/cli/tui/hooks/useAgentDetect.js.map +1 -0
  231. package/dist/cli/tui/hooks/useInstall.d.ts +14 -0
  232. package/dist/cli/tui/hooks/useInstall.d.ts.map +1 -0
  233. package/dist/cli/tui/hooks/useInstall.js +90 -0
  234. package/dist/cli/tui/hooks/useInstall.js.map +1 -0
  235. package/dist/cli/tui/hooks/useSystemCheck.d.ts +13 -0
  236. package/dist/cli/tui/hooks/useSystemCheck.d.ts.map +1 -0
  237. package/dist/cli/tui/hooks/useSystemCheck.js +95 -0
  238. package/dist/cli/tui/hooks/useSystemCheck.js.map +1 -0
  239. package/dist/cli/tui/hooks/useVerify.d.ts +14 -0
  240. package/dist/cli/tui/hooks/useVerify.d.ts.map +1 -0
  241. package/dist/cli/tui/hooks/useVerify.js +71 -0
  242. package/dist/cli/tui/hooks/useVerify.js.map +1 -0
  243. package/dist/cli/tui/ink-init.d.ts +2 -0
  244. package/dist/cli/tui/ink-init.d.ts.map +1 -0
  245. package/dist/cli/tui/ink-init.js +198 -0
  246. package/dist/cli/tui/ink-init.js.map +1 -0
  247. package/dist/cli/tui/reporter-auto.d.ts +7 -0
  248. package/dist/cli/tui/reporter-auto.d.ts.map +1 -0
  249. package/dist/cli/tui/reporter-auto.js +15 -0
  250. package/dist/cli/tui/reporter-auto.js.map +1 -0
  251. package/dist/cli/tui/reporter.d.ts +26 -0
  252. package/dist/cli/tui/reporter.d.ts.map +1 -0
  253. package/dist/cli/tui/reporter.js +32 -0
  254. package/dist/cli/tui/reporter.js.map +1 -0
  255. package/dist/cli/tui/run-command.d.ts +14 -0
  256. package/dist/cli/tui/run-command.d.ts.map +1 -0
  257. package/dist/cli/tui/run-command.js +72 -0
  258. package/dist/cli/tui/run-command.js.map +1 -0
  259. package/dist/cli/tui/select-agents.d.ts +6 -0
  260. package/dist/cli/tui/select-agents.d.ts.map +1 -0
  261. package/dist/cli/tui/select-agents.js +32 -0
  262. package/dist/cli/tui/select-agents.js.map +1 -0
  263. package/dist/cli/tui/status-agents.d.ts +11 -0
  264. package/dist/cli/tui/status-agents.d.ts.map +1 -0
  265. package/dist/cli/tui/status-agents.js +53 -0
  266. package/dist/cli/tui/status-agents.js.map +1 -0
  267. package/dist/cli/tui/status-cache.d.ts +6 -0
  268. package/dist/cli/tui/status-cache.d.ts.map +1 -0
  269. package/dist/cli/tui/status-cache.js +39 -0
  270. package/dist/cli/tui/status-cache.js.map +1 -0
  271. package/dist/cli/tui/status-format.d.ts +14 -0
  272. package/dist/cli/tui/status-format.d.ts.map +1 -0
  273. package/dist/cli/tui/status-format.js +41 -0
  274. package/dist/cli/tui/status-format.js.map +1 -0
  275. package/dist/cli/tui/status-python.d.ts +6 -0
  276. package/dist/cli/tui/status-python.d.ts.map +1 -0
  277. package/dist/cli/tui/status-python.js +30 -0
  278. package/dist/cli/tui/status-python.js.map +1 -0
  279. package/dist/cli/tui/system-check.d.ts +24 -0
  280. package/dist/cli/tui/system-check.d.ts.map +1 -0
  281. package/dist/cli/tui/system-check.js +103 -0
  282. package/dist/cli/tui/system-check.js.map +1 -0
  283. package/dist/cli/tui/tui-reporter.d.ts +19 -0
  284. package/dist/cli/tui/tui-reporter.d.ts.map +1 -0
  285. package/dist/cli/tui/tui-reporter.js +95 -0
  286. package/dist/cli/tui/tui-reporter.js.map +1 -0
  287. package/dist/cli/tui/utils/config-writer.d.ts +3 -0
  288. package/dist/cli/tui/utils/config-writer.d.ts.map +1 -0
  289. package/dist/cli/tui/utils/config-writer.js +22 -0
  290. package/dist/cli/tui/utils/config-writer.js.map +1 -0
  291. package/dist/cli/tui/utils/suppress-logs.d.ts +3 -0
  292. package/dist/cli/tui/utils/suppress-logs.d.ts.map +1 -0
  293. package/dist/cli/tui/utils/suppress-logs.js +11 -0
  294. package/dist/cli/tui/utils/suppress-logs.js.map +1 -0
  295. package/dist/cli/tui/verify-suggestions.d.ts +5 -0
  296. package/dist/cli/tui/verify-suggestions.d.ts.map +1 -0
  297. package/dist/cli/tui/verify-suggestions.js +20 -0
  298. package/dist/cli/tui/verify-suggestions.js.map +1 -0
  299. package/dist/cli/tui/verify.d.ts +14 -0
  300. package/dist/cli/tui/verify.d.ts.map +1 -0
  301. package/dist/cli/tui/verify.js +101 -0
  302. package/dist/cli/tui/verify.js.map +1 -0
  303. package/dist/cli/tui/version.d.ts +2 -0
  304. package/dist/cli/tui/version.d.ts.map +1 -0
  305. package/dist/cli/tui/version.js +14 -0
  306. package/dist/cli/tui/version.js.map +1 -0
  307. package/dist/cli/uninstall.d.ts +2 -0
  308. package/dist/cli/uninstall.d.ts.map +1 -0
  309. package/dist/cli/uninstall.js +57 -0
  310. package/dist/cli/uninstall.js.map +1 -0
  311. package/dist/cli/warmup.d.ts +10 -2
  312. package/dist/cli/warmup.d.ts.map +1 -1
  313. package/dist/cli/warmup.js +226 -93
  314. package/dist/cli/warmup.js.map +1 -1
  315. package/dist/config.d.ts +28 -2
  316. package/dist/config.d.ts.map +1 -1
  317. package/dist/config.js +106 -56
  318. package/dist/config.js.map +1 -1
  319. package/dist/crawl/crawler.d.ts +6 -0
  320. package/dist/crawl/crawler.d.ts.map +1 -1
  321. package/dist/crawl/crawler.js +210 -209
  322. package/dist/crawl/crawler.js.map +1 -1
  323. package/dist/crawl/dedup.d.ts +1 -0
  324. package/dist/crawl/dedup.d.ts.map +1 -1
  325. package/dist/crawl/dedup.js +124 -81
  326. package/dist/crawl/dedup.js.map +1 -1
  327. package/dist/crawl/etag-incremental.d.ts +43 -0
  328. package/dist/crawl/etag-incremental.d.ts.map +1 -0
  329. package/dist/crawl/etag-incremental.js +94 -0
  330. package/dist/crawl/etag-incremental.js.map +1 -0
  331. package/dist/crawl/index-to-vec.d.ts +10 -0
  332. package/dist/crawl/index-to-vec.d.ts.map +1 -0
  333. package/dist/crawl/index-to-vec.js +44 -0
  334. package/dist/crawl/index-to-vec.js.map +1 -0
  335. package/dist/crawl/mapper.js +136 -164
  336. package/dist/crawl/mapper.js.map +1 -1
  337. package/dist/crawl/rate-limiter.js +63 -66
  338. package/dist/crawl/rate-limiter.js.map +1 -1
  339. package/dist/crawl/robots.js +58 -57
  340. package/dist/crawl/robots.js.map +1 -1
  341. package/dist/crawl/sitemap-first.d.ts +12 -0
  342. package/dist/crawl/sitemap-first.d.ts.map +1 -0
  343. package/dist/crawl/sitemap-first.js +47 -0
  344. package/dist/crawl/sitemap-first.js.map +1 -0
  345. package/dist/crawl/sitemap.js +33 -32
  346. package/dist/crawl/sitemap.js.map +1 -1
  347. package/dist/crawl/url-utils.d.ts +1 -0
  348. package/dist/crawl/url-utils.d.ts.map +1 -1
  349. package/dist/crawl/url-utils.js +49 -37
  350. package/dist/crawl/url-utils.js.map +1 -1
  351. package/dist/daemon/health-check.d.ts +16 -0
  352. package/dist/daemon/health-check.d.ts.map +1 -0
  353. package/dist/daemon/health-check.js +33 -0
  354. package/dist/daemon/health-check.js.map +1 -0
  355. package/dist/daemon/http-server.d.ts +26 -0
  356. package/dist/daemon/http-server.d.ts.map +1 -0
  357. package/dist/daemon/http-server.js +275 -0
  358. package/dist/daemon/http-server.js.map +1 -0
  359. package/dist/daemon/proxy.d.ts +10 -0
  360. package/dist/daemon/proxy.d.ts.map +1 -0
  361. package/dist/daemon/proxy.js +93 -0
  362. package/dist/daemon/proxy.js.map +1 -0
  363. package/dist/embedding/embed.d.ts +59 -0
  364. package/dist/embedding/embed.d.ts.map +1 -0
  365. package/dist/embedding/embed.js +233 -0
  366. package/dist/embedding/embed.js.map +1 -0
  367. package/dist/embedding/fastembed-provider.d.ts +19 -0
  368. package/dist/embedding/fastembed-provider.d.ts.map +1 -0
  369. package/dist/embedding/fastembed-provider.js +51 -0
  370. package/dist/embedding/fastembed-provider.js.map +1 -0
  371. package/dist/embedding/key-terms.d.ts +12 -0
  372. package/dist/embedding/key-terms.d.ts.map +1 -0
  373. package/dist/embedding/key-terms.js +234 -0
  374. package/dist/embedding/key-terms.js.map +1 -0
  375. package/dist/extraction/boilerplate.d.ts +15 -0
  376. package/dist/extraction/boilerplate.d.ts.map +1 -0
  377. package/dist/extraction/boilerplate.js +52 -0
  378. package/dist/extraction/boilerplate.js.map +1 -0
  379. package/dist/extraction/defuddle.d.ts.map +1 -1
  380. package/dist/extraction/defuddle.js +27 -23
  381. package/dist/extraction/defuddle.js.map +1 -1
  382. package/dist/extraction/extract.d.ts.map +1 -1
  383. package/dist/extraction/extract.js +76 -76
  384. package/dist/extraction/extract.js.map +1 -1
  385. package/dist/extraction/jsonld.js +50 -54
  386. package/dist/extraction/jsonld.js.map +1 -1
  387. package/dist/extraction/lang-hints.d.ts +2 -0
  388. package/dist/extraction/lang-hints.d.ts.map +1 -0
  389. package/dist/extraction/lang-hints.js +30 -0
  390. package/dist/extraction/lang-hints.js.map +1 -0
  391. package/dist/extraction/llm-fallback.d.ts +17 -0
  392. package/dist/extraction/llm-fallback.d.ts.map +1 -0
  393. package/dist/extraction/llm-fallback.js +130 -0
  394. package/dist/extraction/llm-fallback.js.map +1 -0
  395. package/dist/extraction/markdown-sanitize.d.ts +2 -0
  396. package/dist/extraction/markdown-sanitize.d.ts.map +1 -0
  397. package/dist/extraction/markdown-sanitize.js +151 -0
  398. package/dist/extraction/markdown-sanitize.js.map +1 -0
  399. package/dist/extraction/markdown.d.ts +11 -0
  400. package/dist/extraction/markdown.d.ts.map +1 -1
  401. package/dist/extraction/markdown.js +195 -91
  402. package/dist/extraction/markdown.js.map +1 -1
  403. package/dist/extraction/pipeline.d.ts +8 -0
  404. package/dist/extraction/pipeline.d.ts.map +1 -1
  405. package/dist/extraction/pipeline.js +57 -91
  406. package/dist/extraction/pipeline.js.map +1 -1
  407. package/dist/extraction/readability.d.ts +1 -1
  408. package/dist/extraction/readability.d.ts.map +1 -1
  409. package/dist/extraction/readability.js +28 -29
  410. package/dist/extraction/readability.js.map +1 -1
  411. package/dist/extraction/schema.d.ts +12 -0
  412. package/dist/extraction/schema.d.ts.map +1 -1
  413. package/dist/extraction/schema.js +135 -72
  414. package/dist/extraction/schema.js.map +1 -1
  415. package/dist/extraction/site-extractors/docs-generic.d.ts.map +1 -1
  416. package/dist/extraction/site-extractors/docs-generic.js +81 -91
  417. package/dist/extraction/site-extractors/docs-generic.js.map +1 -1
  418. package/dist/extraction/site-extractors/github.d.ts.map +1 -1
  419. package/dist/extraction/site-extractors/github.js +87 -95
  420. package/dist/extraction/site-extractors/github.js.map +1 -1
  421. package/dist/extraction/site-extractors/mdn.d.ts.map +1 -1
  422. package/dist/extraction/site-extractors/mdn.js +46 -54
  423. package/dist/extraction/site-extractors/mdn.js.map +1 -1
  424. package/dist/extraction/site-extractors/stackoverflow.d.ts.map +1 -1
  425. package/dist/extraction/site-extractors/stackoverflow.js +71 -80
  426. package/dist/extraction/site-extractors/stackoverflow.js.map +1 -1
  427. package/dist/extraction/structured-data.d.ts +4 -0
  428. package/dist/extraction/structured-data.d.ts.map +1 -0
  429. package/dist/extraction/structured-data.js +173 -0
  430. package/dist/extraction/structured-data.js.map +1 -0
  431. package/dist/extraction/structured.d.ts +4 -0
  432. package/dist/extraction/structured.d.ts.map +1 -0
  433. package/dist/extraction/structured.js +163 -0
  434. package/dist/extraction/structured.js.map +1 -0
  435. package/dist/extraction/v1/classifier.d.ts +3 -0
  436. package/dist/extraction/v1/classifier.d.ts.map +1 -0
  437. package/dist/extraction/v1/classifier.js +110 -0
  438. package/dist/extraction/v1/classifier.js.map +1 -0
  439. package/dist/extraction/v1/extract-provider.d.ts +16 -0
  440. package/dist/extraction/v1/extract-provider.d.ts.map +1 -0
  441. package/dist/extraction/v1/extract-provider.js +43 -0
  442. package/dist/extraction/v1/extract-provider.js.map +1 -0
  443. package/dist/extraction/v1/local-llm.d.ts +8 -0
  444. package/dist/extraction/v1/local-llm.d.ts.map +1 -0
  445. package/dist/extraction/v1/local-llm.js +34 -0
  446. package/dist/extraction/v1/local-llm.js.map +1 -0
  447. package/dist/extraction/v1/news.d.ts +3 -0
  448. package/dist/extraction/v1/news.d.ts.map +1 -0
  449. package/dist/extraction/v1/news.js +61 -0
  450. package/dist/extraction/v1/news.js.map +1 -0
  451. package/dist/extraction/v1/product.d.ts +3 -0
  452. package/dist/extraction/v1/product.d.ts.map +1 -0
  453. package/dist/extraction/v1/product.js +166 -0
  454. package/dist/extraction/v1/product.js.map +1 -0
  455. package/dist/extraction/v1/recipe.d.ts +3 -0
  456. package/dist/extraction/v1/recipe.d.ts.map +1 -0
  457. package/dist/extraction/v1/recipe.js +136 -0
  458. package/dist/extraction/v1/recipe.js.map +1 -0
  459. package/dist/extraction/v1/routed.d.ts +17 -0
  460. package/dist/extraction/v1/routed.d.ts.map +1 -0
  461. package/dist/extraction/v1/routed.js +68 -0
  462. package/dist/extraction/v1/routed.js.map +1 -0
  463. package/dist/extraction/v1/schemas/Article.d.ts +11 -0
  464. package/dist/extraction/v1/schemas/Article.d.ts.map +1 -0
  465. package/dist/extraction/v1/schemas/Article.js +23 -0
  466. package/dist/extraction/v1/schemas/Article.js.map +1 -0
  467. package/dist/extraction/v1/schemas/CodeSnippet.d.ts +9 -0
  468. package/dist/extraction/v1/schemas/CodeSnippet.d.ts.map +1 -0
  469. package/dist/extraction/v1/schemas/CodeSnippet.js +90 -0
  470. package/dist/extraction/v1/schemas/CodeSnippet.js.map +1 -0
  471. package/dist/extraction/v1/schemas/EventListing.d.ts +10 -0
  472. package/dist/extraction/v1/schemas/EventListing.d.ts.map +1 -0
  473. package/dist/extraction/v1/schemas/EventListing.js +122 -0
  474. package/dist/extraction/v1/schemas/EventListing.js.map +1 -0
  475. package/dist/extraction/v1/schemas/Paper.d.ts +10 -0
  476. package/dist/extraction/v1/schemas/Paper.d.ts.map +1 -0
  477. package/dist/extraction/v1/schemas/Paper.js +156 -0
  478. package/dist/extraction/v1/schemas/Paper.js.map +1 -0
  479. package/dist/extraction/v1/schemas/Product.d.ts +17 -0
  480. package/dist/extraction/v1/schemas/Product.d.ts.map +1 -0
  481. package/dist/extraction/v1/schemas/Product.js +149 -0
  482. package/dist/extraction/v1/schemas/Product.js.map +1 -0
  483. package/dist/extraction/v1/schemas/Recipe.d.ts +14 -0
  484. package/dist/extraction/v1/schemas/Recipe.d.ts.map +1 -0
  485. package/dist/extraction/v1/schemas/Recipe.js +160 -0
  486. package/dist/extraction/v1/schemas/Recipe.js.map +1 -0
  487. package/dist/extraction/v1/schemas/index.d.ts +13 -0
  488. package/dist/extraction/v1/schemas/index.d.ts.map +1 -0
  489. package/dist/extraction/v1/schemas/index.js +44 -0
  490. package/dist/extraction/v1/schemas/index.js.map +1 -0
  491. package/dist/extraction/v1/site-extractors.d.ts +5 -0
  492. package/dist/extraction/v1/site-extractors.d.ts.map +1 -0
  493. package/dist/extraction/v1/site-extractors.js +31 -0
  494. package/dist/extraction/v1/site-extractors.js.map +1 -0
  495. package/dist/fetch/action-executor.d.ts +28 -0
  496. package/dist/fetch/action-executor.d.ts.map +1 -0
  497. package/dist/fetch/action-executor.js +88 -0
  498. package/dist/fetch/action-executor.js.map +1 -0
  499. package/dist/fetch/auth.d.ts +2 -1
  500. package/dist/fetch/auth.d.ts.map +1 -1
  501. package/dist/fetch/auth.js +56 -26
  502. package/dist/fetch/auth.js.map +1 -1
  503. package/dist/fetch/browser-pool.d.ts +30 -11
  504. package/dist/fetch/browser-pool.d.ts.map +1 -1
  505. package/dist/fetch/browser-pool.js +303 -127
  506. package/dist/fetch/browser-pool.js.map +1 -1
  507. package/dist/fetch/browser-selector.d.ts +17 -0
  508. package/dist/fetch/browser-selector.d.ts.map +1 -0
  509. package/dist/fetch/browser-selector.js +72 -0
  510. package/dist/fetch/browser-selector.js.map +1 -0
  511. package/dist/fetch/browser-types.d.ts +3 -0
  512. package/dist/fetch/browser-types.d.ts.map +1 -0
  513. package/dist/fetch/browser-types.js +45 -0
  514. package/dist/fetch/browser-types.js.map +1 -0
  515. package/dist/fetch/cdp-client.d.ts +9 -0
  516. package/dist/fetch/cdp-client.d.ts.map +1 -0
  517. package/dist/fetch/cdp-client.js +89 -0
  518. package/dist/fetch/cdp-client.js.map +1 -0
  519. package/dist/fetch/content-check.js +39 -46
  520. package/dist/fetch/content-check.js.map +1 -1
  521. package/dist/fetch/error-describe.d.ts +7 -0
  522. package/dist/fetch/error-describe.d.ts.map +1 -0
  523. package/dist/fetch/error-describe.js +37 -0
  524. package/dist/fetch/error-describe.js.map +1 -0
  525. package/dist/fetch/http-client.d.ts +4 -0
  526. package/dist/fetch/http-client.d.ts.map +1 -1
  527. package/dist/fetch/http-client.js +147 -128
  528. package/dist/fetch/http-client.js.map +1 -1
  529. package/dist/fetch/lightpanda.d.ts +28 -0
  530. package/dist/fetch/lightpanda.d.ts.map +1 -0
  531. package/dist/fetch/lightpanda.js +174 -0
  532. package/dist/fetch/lightpanda.js.map +1 -0
  533. package/dist/fetch/playwright-tier.d.ts +19 -0
  534. package/dist/fetch/playwright-tier.d.ts.map +1 -0
  535. package/dist/fetch/playwright-tier.js +76 -0
  536. package/dist/fetch/playwright-tier.js.map +1 -0
  537. package/dist/fetch/router.d.ts +49 -3
  538. package/dist/fetch/router.d.ts.map +1 -1
  539. package/dist/fetch/router.js +187 -81
  540. package/dist/fetch/router.js.map +1 -1
  541. package/dist/index.js +102 -17
  542. package/dist/index.js.map +1 -1
  543. package/dist/instructions.d.ts +31 -0
  544. package/dist/instructions.d.ts.map +1 -0
  545. package/dist/instructions.js +245 -0
  546. package/dist/instructions.js.map +1 -0
  547. package/dist/integrations/cloud/llm/anthropic.d.ts +3 -0
  548. package/dist/integrations/cloud/llm/anthropic.d.ts.map +1 -0
  549. package/dist/integrations/cloud/llm/anthropic.js +41 -0
  550. package/dist/integrations/cloud/llm/anthropic.js.map +1 -0
  551. package/dist/integrations/cloud/llm/cache.d.ts +5 -0
  552. package/dist/integrations/cloud/llm/cache.d.ts.map +1 -0
  553. package/dist/integrations/cloud/llm/cache.js +49 -0
  554. package/dist/integrations/cloud/llm/cache.js.map +1 -0
  555. package/dist/integrations/cloud/llm/gemini.d.ts +3 -0
  556. package/dist/integrations/cloud/llm/gemini.d.ts.map +1 -0
  557. package/dist/integrations/cloud/llm/gemini.js +37 -0
  558. package/dist/integrations/cloud/llm/gemini.js.map +1 -0
  559. package/dist/integrations/cloud/llm/groq.d.ts +3 -0
  560. package/dist/integrations/cloud/llm/groq.d.ts.map +1 -0
  561. package/dist/integrations/cloud/llm/groq.js +74 -0
  562. package/dist/integrations/cloud/llm/groq.js.map +1 -0
  563. package/dist/integrations/cloud/llm/hash.d.ts +3 -0
  564. package/dist/integrations/cloud/llm/hash.d.ts.map +1 -0
  565. package/dist/integrations/cloud/llm/hash.js +26 -0
  566. package/dist/integrations/cloud/llm/hash.js.map +1 -0
  567. package/dist/integrations/cloud/llm/model-select.d.ts +5 -0
  568. package/dist/integrations/cloud/llm/model-select.d.ts.map +1 -0
  569. package/dist/integrations/cloud/llm/model-select.js +32 -0
  570. package/dist/integrations/cloud/llm/model-select.js.map +1 -0
  571. package/dist/integrations/cloud/llm/openai.d.ts +3 -0
  572. package/dist/integrations/cloud/llm/openai.d.ts.map +1 -0
  573. package/dist/integrations/cloud/llm/openai.js +43 -0
  574. package/dist/integrations/cloud/llm/openai.js.map +1 -0
  575. package/dist/integrations/cloud/llm/run.d.ts +27 -0
  576. package/dist/integrations/cloud/llm/run.d.ts.map +1 -0
  577. package/dist/integrations/cloud/llm/run.js +99 -0
  578. package/dist/integrations/cloud/llm/run.js.map +1 -0
  579. package/dist/integrations/cloud/llm/select.d.ts +5 -0
  580. package/dist/integrations/cloud/llm/select.d.ts.map +1 -0
  581. package/dist/integrations/cloud/llm/select.js +30 -0
  582. package/dist/integrations/cloud/llm/select.js.map +1 -0
  583. package/dist/integrations/cloud/llm/text-adapters.d.ts +19 -0
  584. package/dist/integrations/cloud/llm/text-adapters.d.ts.map +1 -0
  585. package/dist/integrations/cloud/llm/text-adapters.js +103 -0
  586. package/dist/integrations/cloud/llm/text-adapters.js.map +1 -0
  587. package/dist/integrations/cloud/llm/types.d.ts +24 -0
  588. package/dist/integrations/cloud/llm/types.d.ts.map +1 -0
  589. package/dist/integrations/cloud/llm/types.js +1 -0
  590. package/dist/integrations/cloud/llm/types.js.map +1 -0
  591. package/dist/integrations/cloud/llm/validate.d.ts +6 -0
  592. package/dist/integrations/cloud/llm/validate.d.ts.map +1 -0
  593. package/dist/integrations/cloud/llm/validate.js +63 -0
  594. package/dist/integrations/cloud/llm/validate.js.map +1 -0
  595. package/dist/logger.d.ts +4 -1
  596. package/dist/logger.d.ts.map +1 -1
  597. package/dist/logger.js +71 -30
  598. package/dist/logger.js.map +1 -1
  599. package/dist/pdf-parse.d.js +1 -0
  600. package/dist/pdf-parse.d.js.map +1 -0
  601. package/dist/plugins/loader.d.ts +20 -0
  602. package/dist/plugins/loader.d.ts.map +1 -0
  603. package/dist/plugins/loader.js +157 -0
  604. package/dist/plugins/loader.js.map +1 -0
  605. package/dist/plugins/registry.d.ts +26 -0
  606. package/dist/plugins/registry.d.ts.map +1 -0
  607. package/dist/plugins/registry.js +71 -0
  608. package/dist/plugins/registry.js.map +1 -0
  609. package/dist/plugins/validate.d.ts +9 -0
  610. package/dist/plugins/validate.d.ts.map +1 -0
  611. package/dist/plugins/validate.js +79 -0
  612. package/dist/plugins/validate.js.map +1 -0
  613. package/dist/providers/embed-provider.d.ts +11 -0
  614. package/dist/providers/embed-provider.d.ts.map +1 -0
  615. package/dist/providers/embed-provider.js +24 -0
  616. package/dist/providers/embed-provider.js.map +1 -0
  617. package/dist/providers/extract-provider.d.ts +23 -0
  618. package/dist/providers/extract-provider.d.ts.map +1 -0
  619. package/dist/providers/extract-provider.js +25 -0
  620. package/dist/providers/extract-provider.js.map +1 -0
  621. package/dist/providers/rerank-provider.d.ts +17 -0
  622. package/dist/providers/rerank-provider.d.ts.map +1 -0
  623. package/dist/providers/rerank-provider.js +41 -0
  624. package/dist/providers/rerank-provider.js.map +1 -0
  625. package/dist/providers/search-provider.d.ts +25 -0
  626. package/dist/providers/search-provider.d.ts.map +1 -0
  627. package/dist/providers/search-provider.js +44 -0
  628. package/dist/providers/search-provider.js.map +1 -0
  629. package/dist/providers/vector-store.d.ts +27 -0
  630. package/dist/providers/vector-store.d.ts.map +1 -0
  631. package/dist/providers/vector-store.js +27 -0
  632. package/dist/providers/vector-store.js.map +1 -0
  633. package/dist/python-env.d.ts +9 -0
  634. package/dist/python-env.d.ts.map +1 -0
  635. package/dist/python-env.js +13 -0
  636. package/dist/python-env.js.map +1 -0
  637. package/dist/repl/commands/agent.d.ts +5 -0
  638. package/dist/repl/commands/agent.d.ts.map +1 -0
  639. package/dist/repl/commands/agent.js +62 -0
  640. package/dist/repl/commands/agent.js.map +1 -0
  641. package/dist/repl/commands/cache.d.ts +4 -0
  642. package/dist/repl/commands/cache.d.ts.map +1 -0
  643. package/dist/repl/commands/cache.js +43 -0
  644. package/dist/repl/commands/cache.js.map +1 -0
  645. package/dist/repl/commands/crawl.d.ts +7 -0
  646. package/dist/repl/commands/crawl.d.ts.map +1 -0
  647. package/dist/repl/commands/crawl.js +44 -0
  648. package/dist/repl/commands/crawl.js.map +1 -0
  649. package/dist/repl/commands/extract.d.ts +5 -0
  650. package/dist/repl/commands/extract.d.ts.map +1 -0
  651. package/dist/repl/commands/extract.js +47 -0
  652. package/dist/repl/commands/extract.js.map +1 -0
  653. package/dist/repl/commands/fetch.d.ts +5 -0
  654. package/dist/repl/commands/fetch.d.ts.map +1 -0
  655. package/dist/repl/commands/fetch.js +67 -0
  656. package/dist/repl/commands/fetch.js.map +1 -0
  657. package/dist/repl/commands/find-similar.d.ts +5 -0
  658. package/dist/repl/commands/find-similar.d.ts.map +1 -0
  659. package/dist/repl/commands/find-similar.js +74 -0
  660. package/dist/repl/commands/find-similar.js.map +1 -0
  661. package/dist/repl/commands/research.d.ts +5 -0
  662. package/dist/repl/commands/research.d.ts.map +1 -0
  663. package/dist/repl/commands/research.js +65 -0
  664. package/dist/repl/commands/research.js.map +1 -0
  665. package/dist/repl/commands/search.d.ts +5 -0
  666. package/dist/repl/commands/search.d.ts.map +1 -0
  667. package/dist/repl/commands/search.js +74 -0
  668. package/dist/repl/commands/search.js.map +1 -0
  669. package/dist/repl/commands/types.d.ts +9 -0
  670. package/dist/repl/commands/types.d.ts.map +1 -0
  671. package/dist/repl/commands/types.js +1 -0
  672. package/dist/repl/commands/types.js.map +1 -0
  673. package/dist/repl/formatters.d.ts +13 -0
  674. package/dist/repl/formatters.d.ts.map +1 -0
  675. package/dist/repl/formatters.js +283 -0
  676. package/dist/repl/formatters.js.map +1 -0
  677. package/dist/repl/parser.d.ts +9 -0
  678. package/dist/repl/parser.d.ts.map +1 -0
  679. package/dist/repl/parser.js +86 -0
  680. package/dist/repl/parser.js.map +1 -0
  681. package/dist/repl/shell.d.ts +8 -0
  682. package/dist/repl/shell.d.ts.map +1 -0
  683. package/dist/repl/shell.js +184 -0
  684. package/dist/repl/shell.js.map +1 -0
  685. package/dist/research/branch-exploration.d.ts +14 -0
  686. package/dist/research/branch-exploration.d.ts.map +1 -0
  687. package/dist/research/branch-exploration.js +100 -0
  688. package/dist/research/branch-exploration.js.map +1 -0
  689. package/dist/research/brief.d.ts +6 -0
  690. package/dist/research/brief.d.ts.map +1 -0
  691. package/dist/research/brief.js +246 -0
  692. package/dist/research/brief.js.map +1 -0
  693. package/dist/research/citation-graph.d.ts +9 -0
  694. package/dist/research/citation-graph.d.ts.map +1 -0
  695. package/dist/research/citation-graph.js +114 -0
  696. package/dist/research/citation-graph.js.map +1 -0
  697. package/dist/research/decompose.d.ts +14 -0
  698. package/dist/research/decompose.d.ts.map +1 -0
  699. package/dist/research/decompose.js +439 -0
  700. package/dist/research/decompose.js.map +1 -0
  701. package/dist/research/pipeline.d.ts +5 -0
  702. package/dist/research/pipeline.d.ts.map +1 -0
  703. package/dist/research/pipeline.js +269 -0
  704. package/dist/research/pipeline.js.map +1 -0
  705. package/dist/research/synthesis-local.d.ts +19 -0
  706. package/dist/research/synthesis-local.d.ts.map +1 -0
  707. package/dist/research/synthesis-local.js +62 -0
  708. package/dist/research/synthesis-local.js.map +1 -0
  709. package/dist/research/synthesize.d.ts +10 -0
  710. package/dist/research/synthesize.d.ts.map +1 -0
  711. package/dist/research/synthesize.js +137 -0
  712. package/dist/research/synthesize.js.map +1 -0
  713. package/dist/search/answer-synthesis.d.ts +33 -0
  714. package/dist/search/answer-synthesis.d.ts.map +1 -0
  715. package/dist/search/answer-synthesis.js +244 -0
  716. package/dist/search/answer-synthesis.js.map +1 -0
  717. package/dist/search/context-formatter.d.ts +3 -0
  718. package/dist/search/context-formatter.d.ts.map +1 -0
  719. package/dist/search/context-formatter.js +56 -0
  720. package/dist/search/context-formatter.js.map +1 -0
  721. package/dist/search/dedup.d.ts +1 -0
  722. package/dist/search/dedup.d.ts.map +1 -1
  723. package/dist/search/dedup.js +40 -32
  724. package/dist/search/dedup.js.map +1 -1
  725. package/dist/search/engines/arxiv.d.ts +7 -0
  726. package/dist/search/engines/arxiv.d.ts.map +1 -0
  727. package/dist/search/engines/arxiv.js +70 -0
  728. package/dist/search/engines/arxiv.js.map +1 -0
  729. package/dist/search/engines/bing-news.d.ts +7 -0
  730. package/dist/search/engines/bing-news.d.ts.map +1 -0
  731. package/dist/search/engines/bing-news.js +97 -0
  732. package/dist/search/engines/bing-news.js.map +1 -0
  733. package/dist/search/engines/bing.d.ts +1 -0
  734. package/dist/search/engines/bing.d.ts.map +1 -1
  735. package/dist/search/engines/bing.js +100 -44
  736. package/dist/search/engines/bing.js.map +1 -1
  737. package/dist/search/engines/devdocs.d.ts +6 -0
  738. package/dist/search/engines/devdocs.d.ts.map +1 -0
  739. package/dist/search/engines/devdocs.js +56 -0
  740. package/dist/search/engines/devdocs.js.map +1 -0
  741. package/dist/search/engines/duckduckgo.d.ts.map +1 -1
  742. package/dist/search/engines/duckduckgo.js +56 -44
  743. package/dist/search/engines/duckduckgo.js.map +1 -1
  744. package/dist/search/engines/github-code.d.ts +7 -0
  745. package/dist/search/engines/github-code.d.ts.map +1 -0
  746. package/dist/search/engines/github-code.js +55 -0
  747. package/dist/search/engines/github-code.js.map +1 -0
  748. package/dist/search/engines/hn-algolia.d.ts +7 -0
  749. package/dist/search/engines/hn-algolia.d.ts.map +1 -0
  750. package/dist/search/engines/hn-algolia.js +76 -0
  751. package/dist/search/engines/hn-algolia.js.map +1 -0
  752. package/dist/search/engines/lobsters.d.ts +7 -0
  753. package/dist/search/engines/lobsters.d.ts.map +1 -0
  754. package/dist/search/engines/lobsters.js +83 -0
  755. package/dist/search/engines/lobsters.js.map +1 -0
  756. package/dist/search/engines/mdn.d.ts +7 -0
  757. package/dist/search/engines/mdn.d.ts.map +1 -0
  758. package/dist/search/engines/mdn.js +48 -0
  759. package/dist/search/engines/mdn.js.map +1 -0
  760. package/dist/search/engines/semantic-scholar.d.ts +7 -0
  761. package/dist/search/engines/semantic-scholar.d.ts.map +1 -0
  762. package/dist/search/engines/semantic-scholar.js +69 -0
  763. package/dist/search/engines/semantic-scholar.js.map +1 -0
  764. package/dist/search/engines/stackoverflow.d.ts +7 -0
  765. package/dist/search/engines/stackoverflow.d.ts.map +1 -0
  766. package/dist/search/engines/stackoverflow.js +73 -0
  767. package/dist/search/engines/stackoverflow.js.map +1 -0
  768. package/dist/search/engines/startpage.d.ts.map +1 -1
  769. package/dist/search/engines/startpage.js +65 -46
  770. package/dist/search/engines/startpage.js.map +1 -1
  771. package/dist/search/evidence.d.ts +25 -0
  772. package/dist/search/evidence.d.ts.map +1 -0
  773. package/dist/search/evidence.js +220 -0
  774. package/dist/search/evidence.js.map +1 -0
  775. package/dist/search/filters.d.ts.map +1 -1
  776. package/dist/search/filters.js +58 -54
  777. package/dist/search/filters.js.map +1 -1
  778. package/dist/search/find-similar/crawl-rank.d.ts +9 -0
  779. package/dist/search/find-similar/crawl-rank.d.ts.map +1 -0
  780. package/dist/search/find-similar/crawl-rank.js +272 -0
  781. package/dist/search/find-similar/crawl-rank.js.map +1 -0
  782. package/dist/search/find-similar/mode.d.ts +4 -0
  783. package/dist/search/find-similar/mode.d.ts.map +1 -0
  784. package/dist/search/find-similar/mode.js +12 -0
  785. package/dist/search/find-similar/mode.js.map +1 -0
  786. package/dist/search/find-similar.d.ts +5 -0
  787. package/dist/search/find-similar.d.ts.map +1 -0
  788. package/dist/search/find-similar.js +509 -0
  789. package/dist/search/find-similar.js.map +1 -0
  790. package/dist/search/highlights.d.ts +19 -0
  791. package/dist/search/highlights.d.ts.map +1 -0
  792. package/dist/search/highlights.js +167 -0
  793. package/dist/search/highlights.js.map +1 -0
  794. package/dist/search/language-filter.d.ts +29 -0
  795. package/dist/search/language-filter.d.ts.map +1 -0
  796. package/dist/search/language-filter.js +126 -0
  797. package/dist/search/language-filter.js.map +1 -0
  798. package/dist/search/legacy/searxng-orchestrator.d.ts +4 -0
  799. package/dist/search/legacy/searxng-orchestrator.d.ts.map +1 -0
  800. package/dist/search/legacy/searxng-orchestrator.js +501 -0
  801. package/dist/search/legacy/searxng-orchestrator.js.map +1 -0
  802. package/dist/search/legacy/searxng-provider.d.ts +7 -0
  803. package/dist/search/legacy/searxng-provider.d.ts.map +1 -0
  804. package/dist/search/legacy/searxng-provider.js +11 -0
  805. package/dist/search/legacy/searxng-provider.js.map +1 -0
  806. package/dist/search/multi-query.d.ts +25 -0
  807. package/dist/search/multi-query.d.ts.map +1 -0
  808. package/dist/search/multi-query.js +228 -0
  809. package/dist/search/multi-query.js.map +1 -0
  810. package/dist/search/query.js +32 -34
  811. package/dist/search/query.js.map +1 -1
  812. package/dist/search/rerank.d.ts +3 -1
  813. package/dist/search/rerank.d.ts.map +1 -1
  814. package/dist/search/rerank.js +44 -35
  815. package/dist/search/rerank.js.map +1 -1
  816. package/dist/search/reranker/authority-boost.d.ts +3 -0
  817. package/dist/search/reranker/authority-boost.d.ts.map +1 -0
  818. package/dist/search/reranker/authority-boost.js +179 -0
  819. package/dist/search/reranker/authority-boost.js.map +1 -0
  820. package/dist/search/reranker/consensus-boost.d.ts +3 -0
  821. package/dist/search/reranker/consensus-boost.d.ts.map +1 -0
  822. package/dist/search/reranker/consensus-boost.js +27 -0
  823. package/dist/search/reranker/consensus-boost.js.map +1 -0
  824. package/dist/search/reranker/recency-boost.d.ts +3 -0
  825. package/dist/search/reranker/recency-boost.d.ts.map +1 -0
  826. package/dist/search/reranker/recency-boost.js +13 -0
  827. package/dist/search/reranker/recency-boost.js.map +1 -0
  828. package/dist/search/reranker/recency.d.ts +3 -0
  829. package/dist/search/reranker/recency.d.ts.map +1 -0
  830. package/dist/search/reranker/recency.js +23 -0
  831. package/dist/search/reranker/recency.js.map +1 -0
  832. package/dist/search/reranker/transformers-rerank-provider.d.ts +13 -0
  833. package/dist/search/reranker/transformers-rerank-provider.d.ts.map +1 -0
  834. package/dist/search/reranker/transformers-rerank-provider.js +94 -0
  835. package/dist/search/reranker/transformers-rerank-provider.js.map +1 -0
  836. package/dist/search/rrf.d.ts +17 -0
  837. package/dist/search/rrf.d.ts.map +1 -0
  838. package/dist/search/rrf.js +39 -0
  839. package/dist/search/rrf.js.map +1 -0
  840. package/dist/search/sampling.d.ts +25 -0
  841. package/dist/search/sampling.d.ts.map +1 -0
  842. package/dist/search/sampling.js +52 -0
  843. package/dist/search/sampling.js.map +1 -0
  844. package/dist/search/searxng.d.ts.map +1 -1
  845. package/dist/search/searxng.js +69 -79
  846. package/dist/search/searxng.js.map +1 -1
  847. package/dist/search/tokens.d.ts +3 -0
  848. package/dist/search/tokens.d.ts.map +1 -0
  849. package/dist/search/tokens.js +39 -0
  850. package/dist/search/tokens.js.map +1 -0
  851. package/dist/search/truncate.d.ts +6 -0
  852. package/dist/search/truncate.d.ts.map +1 -0
  853. package/dist/search/truncate.js +26 -0
  854. package/dist/search/truncate.js.map +1 -0
  855. package/dist/search/url-unwrap.d.ts +3 -0
  856. package/dist/search/url-unwrap.d.ts.map +1 -0
  857. package/dist/search/url-unwrap.js +43 -0
  858. package/dist/search/url-unwrap.js.map +1 -0
  859. package/dist/search/v1/context-rank.d.ts +13 -0
  860. package/dist/search/v1/context-rank.d.ts.map +1 -0
  861. package/dist/search/v1/context-rank.js +74 -0
  862. package/dist/search/v1/context-rank.js.map +1 -0
  863. package/dist/search/v1/engine-base.d.ts +27 -0
  864. package/dist/search/v1/engine-base.d.ts.map +1 -0
  865. package/dist/search/v1/engine-base.js +110 -0
  866. package/dist/search/v1/engine-base.js.map +1 -0
  867. package/dist/search/v1/intent-router.d.ts +22 -0
  868. package/dist/search/v1/intent-router.d.ts.map +1 -0
  869. package/dist/search/v1/intent-router.js +138 -0
  870. package/dist/search/v1/intent-router.js.map +1 -0
  871. package/dist/search/v1/orchestrator.d.ts +24 -0
  872. package/dist/search/v1/orchestrator.d.ts.map +1 -0
  873. package/dist/search/v1/orchestrator.js +163 -0
  874. package/dist/search/v1/orchestrator.js.map +1 -0
  875. package/dist/search/v1/recency-boost.d.ts +9 -0
  876. package/dist/search/v1/recency-boost.d.ts.map +1 -0
  877. package/dist/search/v1/recency-boost.js +37 -0
  878. package/dist/search/v1/recency-boost.js.map +1 -0
  879. package/dist/search/v1/recent-cache-dedup.d.ts +6 -0
  880. package/dist/search/v1/recent-cache-dedup.d.ts.map +1 -0
  881. package/dist/search/v1/recent-cache-dedup.js +85 -0
  882. package/dist/search/v1/recent-cache-dedup.js.map +1 -0
  883. package/dist/search/v1/rss/feed-config.d.ts +21 -0
  884. package/dist/search/v1/rss/feed-config.d.ts.map +1 -0
  885. package/dist/search/v1/rss/feed-config.js +90 -0
  886. package/dist/search/v1/rss/feed-config.js.map +1 -0
  887. package/dist/search/v1/rss/feed-parser.d.ts +14 -0
  888. package/dist/search/v1/rss/feed-parser.d.ts.map +1 -0
  889. package/dist/search/v1/rss/feed-parser.js +104 -0
  890. package/dist/search/v1/rss/feed-parser.js.map +1 -0
  891. package/dist/search/v1/rss/feed-poller.d.ts +22 -0
  892. package/dist/search/v1/rss/feed-poller.d.ts.map +1 -0
  893. package/dist/search/v1/rss/feed-poller.js +102 -0
  894. package/dist/search/v1/rss/feed-poller.js.map +1 -0
  895. package/dist/search/v1/rss/feed-store.d.ts +30 -0
  896. package/dist/search/v1/rss/feed-store.d.ts.map +1 -0
  897. package/dist/search/v1/rss/feed-store.js +134 -0
  898. package/dist/search/v1/rss/feed-store.js.map +1 -0
  899. package/dist/search/v1/rss/rss-engine.d.ts +6 -0
  900. package/dist/search/v1/rss/rss-engine.d.ts.map +1 -0
  901. package/dist/search/v1/rss/rss-engine.js +28 -0
  902. package/dist/search/v1/rss/rss-engine.js.map +1 -0
  903. package/dist/search/v1/v1-provider.d.ts +7 -0
  904. package/dist/search/v1/v1-provider.d.ts.map +1 -0
  905. package/dist/search/v1/v1-provider.js +68 -0
  906. package/dist/search/v1/v1-provider.js.map +1 -0
  907. package/dist/search/v1/verticals/code.d.ts +4 -0
  908. package/dist/search/v1/verticals/code.d.ts.map +1 -0
  909. package/dist/search/v1/verticals/code.js +20 -0
  910. package/dist/search/v1/verticals/code.js.map +1 -0
  911. package/dist/search/v1/verticals/docs.d.ts +4 -0
  912. package/dist/search/v1/verticals/docs.d.ts.map +1 -0
  913. package/dist/search/v1/verticals/docs.js +20 -0
  914. package/dist/search/v1/verticals/docs.js.map +1 -0
  915. package/dist/search/v1/verticals/general.d.ts +4 -0
  916. package/dist/search/v1/verticals/general.d.ts.map +1 -0
  917. package/dist/search/v1/verticals/general.js +22 -0
  918. package/dist/search/v1/verticals/general.js.map +1 -0
  919. package/dist/search/v1/verticals/news.d.ts +10 -0
  920. package/dist/search/v1/verticals/news.d.ts.map +1 -0
  921. package/dist/search/v1/verticals/news.js +52 -0
  922. package/dist/search/v1/verticals/news.js.map +1 -0
  923. package/dist/search/v1/verticals/papers.d.ts +4 -0
  924. package/dist/search/v1/verticals/papers.d.ts.map +1 -0
  925. package/dist/search/v1/verticals/papers.js +23 -0
  926. package/dist/search/v1/verticals/papers.js.map +1 -0
  927. package/dist/search/validator.js +31 -31
  928. package/dist/search/validator.js.map +1 -1
  929. package/dist/searxng/bootstrap.d.ts +30 -0
  930. package/dist/searxng/bootstrap.d.ts.map +1 -1
  931. package/dist/searxng/bootstrap.js +223 -85
  932. package/dist/searxng/bootstrap.js.map +1 -1
  933. package/dist/searxng/docker.d.ts.map +1 -1
  934. package/dist/searxng/docker.js +69 -60
  935. package/dist/searxng/docker.js.map +1 -1
  936. package/dist/searxng/process.d.ts +13 -1
  937. package/dist/searxng/process.d.ts.map +1 -1
  938. package/dist/searxng/process.js +231 -164
  939. package/dist/searxng/process.js.map +1 -1
  940. package/dist/server/backend-status.d.ts +13 -0
  941. package/dist/server/backend-status.d.ts.map +1 -0
  942. package/dist/server/backend-status.js +40 -0
  943. package/dist/server/backend-status.js.map +1 -0
  944. package/dist/server/tool-schemas.d.ts +549 -0
  945. package/dist/server/tool-schemas.d.ts.map +1 -0
  946. package/dist/server/tool-schemas.js +464 -0
  947. package/dist/server/tool-schemas.js.map +1 -0
  948. package/dist/server/warmup-on-start.d.ts +9 -0
  949. package/dist/server/warmup-on-start.d.ts.map +1 -0
  950. package/dist/server/warmup-on-start.js +55 -0
  951. package/dist/server/warmup-on-start.js.map +1 -0
  952. package/dist/server.d.ts +17 -0
  953. package/dist/server.d.ts.map +1 -1
  954. package/dist/server.js +454 -297
  955. package/dist/server.js.map +1 -1
  956. package/dist/tools/agent.d.ts +5 -0
  957. package/dist/tools/agent.d.ts.map +1 -0
  958. package/dist/tools/agent.js +128 -0
  959. package/dist/tools/agent.js.map +1 -0
  960. package/dist/tools/cache.d.ts +2 -1
  961. package/dist/tools/cache.d.ts.map +1 -1
  962. package/dist/tools/cache.js +177 -44
  963. package/dist/tools/cache.js.map +1 -1
  964. package/dist/tools/crawl.d.ts.map +1 -1
  965. package/dist/tools/crawl.js +171 -88
  966. package/dist/tools/crawl.js.map +1 -1
  967. package/dist/tools/extract.d.ts +2 -2
  968. package/dist/tools/extract.d.ts.map +1 -1
  969. package/dist/tools/extract.js +175 -59
  970. package/dist/tools/extract.js.map +1 -1
  971. package/dist/tools/fetch.d.ts +2 -2
  972. package/dist/tools/fetch.d.ts.map +1 -1
  973. package/dist/tools/fetch.js +174 -68
  974. package/dist/tools/fetch.js.map +1 -1
  975. package/dist/tools/find-similar.d.ts +5 -0
  976. package/dist/tools/find-similar.d.ts.map +1 -0
  977. package/dist/tools/find-similar.js +127 -0
  978. package/dist/tools/find-similar.js.map +1 -0
  979. package/dist/tools/research.d.ts +5 -0
  980. package/dist/tools/research.d.ts.map +1 -0
  981. package/dist/tools/research.js +107 -0
  982. package/dist/tools/research.js.map +1 -0
  983. package/dist/tools/search.d.ts +10 -2
  984. package/dist/tools/search.d.ts.map +1 -1
  985. package/dist/tools/search.js +13 -158
  986. package/dist/tools/search.js.map +1 -1
  987. package/dist/types.d.ts +350 -7
  988. package/dist/types.d.ts.map +1 -1
  989. package/dist/types.js +6 -1
  990. package/dist/types.js.map +1 -1
  991. package/dist/util/mode.d.ts +4 -0
  992. package/dist/util/mode.d.ts.map +1 -0
  993. package/dist/util/mode.js +34 -0
  994. package/dist/util/mode.js.map +1 -0
  995. package/package.json +78 -8
  996. package/dist/extraction/trafilatura.d.ts +0 -6
  997. package/dist/extraction/trafilatura.d.ts.map +0 -1
  998. package/dist/extraction/trafilatura.js +0 -105
  999. package/dist/extraction/trafilatura.js.map +0 -1
  1000. package/dist/search/flashrank.d.ts +0 -12
  1001. package/dist/search/flashrank.d.ts.map +0 -1
  1002. package/dist/search/flashrank.js +0 -63
  1003. package/dist/search/flashrank.js.map +0 -1
@@ -0,0 +1,439 @@
1
+ import { createLogger } from "../logger.js";
2
+ import {
3
+ requestSampling,
4
+ checkSamplingSupport
5
+ } from "../search/sampling.js";
6
+ const log = createLogger("research");
7
+ const DEPTH_SUB_QUERY_COUNT = {
8
+ quick: 2,
9
+ standard: 4,
10
+ comprehensive: 7
11
+ };
12
+ async function decomposeQuestion(question, depth, server) {
13
+ const targetCount = DEPTH_SUB_QUERY_COUNT[depth] ?? 4;
14
+ const queryType = detectQueryType(question);
15
+ if (server) {
16
+ try {
17
+ const result = await decomposeWithSampling(question, targetCount, server);
18
+ if (result) {
19
+ return { subQueries: result, samplingUsed: true, queryType };
20
+ }
21
+ } catch (err) {
22
+ log.warn("sampling decomposition failed, using fallback", {
23
+ error: err instanceof Error ? err.message : String(err)
24
+ });
25
+ }
26
+ }
27
+ const templateQueries = decomposeWithTemplate(question, queryType, targetCount);
28
+ if (templateQueries && templateQueries.length >= targetCount) {
29
+ return { subQueries: templateQueries, samplingUsed: false, queryType };
30
+ }
31
+ if (templateQueries && templateQueries.length > 0) {
32
+ const fallback2 = decomposeWithFallback(question, targetCount);
33
+ const merged = [...templateQueries];
34
+ const seen = new Set(merged.map((q) => q.toLowerCase()));
35
+ for (const q of fallback2) {
36
+ if (merged.length >= targetCount) break;
37
+ if (!seen.has(q.toLowerCase())) {
38
+ merged.push(q);
39
+ seen.add(q.toLowerCase());
40
+ }
41
+ }
42
+ return { subQueries: merged.slice(0, targetCount), samplingUsed: false, queryType };
43
+ }
44
+ const fallback = decomposeWithFallback(question, targetCount);
45
+ return { subQueries: fallback, samplingUsed: false, queryType };
46
+ }
47
+ async function decomposeWithSampling(question, targetCount, server) {
48
+ try {
49
+ if (!checkSamplingSupport(server)) {
50
+ log.debug("client does not support sampling");
51
+ return null;
52
+ }
53
+ const prompt = `You are a research assistant. Break this question into exactly ${targetCount} distinct search queries that cover different aspects of the topic. Return a JSON object with a "subQueries" array of strings. Each query should be a concise search-engine-ready phrase (not a full sentence). Cover different angles: definitions, comparisons, current state, best practices, etc.
54
+
55
+ Question: ${question}
56
+
57
+ Respond with ONLY valid JSON: {"subQueries": ["query1", "query2", ...]}`;
58
+ const response = await requestSampling(
59
+ server,
60
+ [{ role: "user", content: { type: "text", text: prompt } }],
61
+ 500
62
+ );
63
+ if (!response?.content?.text) {
64
+ log.debug("sampling returned empty response");
65
+ return null;
66
+ }
67
+ const text = response.content.text.trim();
68
+ let parsed;
69
+ try {
70
+ parsed = JSON.parse(text);
71
+ } catch {
72
+ const jsonMatch = text.match(/\{[\s\S]*\}/);
73
+ if (jsonMatch) {
74
+ try {
75
+ parsed = JSON.parse(jsonMatch[0]);
76
+ } catch {
77
+ log.debug("could not extract JSON from sampling response");
78
+ return null;
79
+ }
80
+ } else {
81
+ return null;
82
+ }
83
+ }
84
+ if (typeof parsed !== "object" || parsed === null || !Array.isArray(parsed.subQueries)) {
85
+ log.debug("sampling response missing subQueries array");
86
+ return null;
87
+ }
88
+ const subQueries = parsed.subQueries.filter((q) => typeof q === "string" && q.trim().length > 0).map((q) => q.trim());
89
+ if (subQueries.length < targetCount) {
90
+ log.debug("sampling returned fewer sub-queries than requested", {
91
+ expected: targetCount,
92
+ got: subQueries.length
93
+ });
94
+ return null;
95
+ }
96
+ return subQueries.slice(0, targetCount);
97
+ } catch (err) {
98
+ log.debug("sampling request failed", {
99
+ error: err instanceof Error ? err.message : String(err)
100
+ });
101
+ return null;
102
+ }
103
+ }
104
+ function detectQueryType(question) {
105
+ const q = question.trim().toLowerCase();
106
+ if (/\bvs\.?\s/i.test(q) || /\bversus\b/i.test(q) || /^compare\b/i.test(q)) {
107
+ return "comparison";
108
+ }
109
+ if (/\b(?:difference|differences)\s+between\b/i.test(q)) {
110
+ return "comparison";
111
+ }
112
+ if (/\b\w+\s+or\s+\w+\s+for\b/i.test(q)) {
113
+ return "comparison";
114
+ }
115
+ if (/^how\s+(?:to|do|does|can|should)\b/i.test(q) || /^steps\s+to\b/i.test(q)) {
116
+ return "how-to";
117
+ }
118
+ if (/^(?:what\s+(?:is|are)|explain|overview\s+of|describe)\b/i.test(q)) {
119
+ return "concept";
120
+ }
121
+ return "general";
122
+ }
123
+ const TRAILING_CATEGORY_NOUNS = /* @__PURE__ */ new Set([
124
+ "runtime",
125
+ "runtimes",
126
+ "framework",
127
+ "frameworks",
128
+ "library",
129
+ "libraries",
130
+ "tool",
131
+ "tools",
132
+ "language",
133
+ "languages",
134
+ "database",
135
+ "databases",
136
+ "db",
137
+ "dbs",
138
+ "platform",
139
+ "platforms",
140
+ "service",
141
+ "services",
142
+ "engine",
143
+ "engines",
144
+ "editor",
145
+ "editors",
146
+ "ide",
147
+ "ides",
148
+ "package",
149
+ "packages"
150
+ ]);
151
+ function trimCategorySuffix(entity) {
152
+ const tokens = entity.trim().split(/\s+/);
153
+ while (tokens.length > 1) {
154
+ const last = tokens[tokens.length - 1].toLowerCase();
155
+ if (!TRAILING_CATEGORY_NOUNS.has(last)) break;
156
+ tokens.pop();
157
+ }
158
+ return tokens.join(" ");
159
+ }
160
+ function extractComparisonEntities(question) {
161
+ const cleaned = question.replace(/[?!.]/g, "").replace(/^(?:how\s+(?:does|do|is|are|about)|what\s+(?:is|are)\s+(?:the\s+)?(?:difference|differences)\s+(?:between)?|should\s+I\s+(?:use|choose)|which\s+is\s+better)\s*/i, "").trim();
162
+ const vsMatch = cleaned.match(/^(.+?)\s+(?:vs\.?|versus)\s+(.+?)(?:\s+(?:vs\.?|versus)\s+(.+?))?(?:\s+(?:for|in|with|when)\s+(.+))?$/i);
163
+ if (vsMatch) {
164
+ const entities = [vsMatch[1], vsMatch[2], vsMatch[3]].filter(Boolean).map((e) => trimCategorySuffix(e.trim()));
165
+ return { entities, context: vsMatch[4]?.trim() || "" };
166
+ }
167
+ const compareMatch = cleaned.match(/^compare\s+(.+?)(?:\s+(?:for|in|with|when)\s+(.+))?$/i);
168
+ if (compareMatch) {
169
+ const entityPart = compareMatch[1];
170
+ const entities = entityPart.split(/(?:,\s*|\s+and\s+)/).map((e) => trimCategorySuffix(e.trim())).filter(Boolean);
171
+ return { entities, context: compareMatch[2]?.trim() || "" };
172
+ }
173
+ const diffMatch = cleaned.match(/differences?\s+between\s+(.+?)\s+and\s+(.+?)(?:\s+(?:for|in|with)\s+(.+))?$/i);
174
+ if (diffMatch) {
175
+ return {
176
+ entities: [trimCategorySuffix(diffMatch[1].trim()), trimCategorySuffix(diffMatch[2].trim())],
177
+ context: diffMatch[3]?.trim() || ""
178
+ };
179
+ }
180
+ return { entities: [], context: "" };
181
+ }
182
+ function decomposeWithTemplate(question, queryType, targetCount) {
183
+ if (queryType === "comparison") {
184
+ const { entities, context } = extractComparisonEntities(question);
185
+ if (entities.length < 2) return null;
186
+ const queries = [];
187
+ for (const entity of entities) {
188
+ queries.push(`${entity} ${context} features performance`.trim());
189
+ }
190
+ for (let i = 0; i < entities.length; i++) {
191
+ for (let j = i + 1; j < entities.length; j++) {
192
+ queries.push(`${entities[i]} vs ${entities[j]} ${context} comparison`.trim());
193
+ }
194
+ }
195
+ queries.push(`${entities.join(" vs ")} which to choose ${context}`.trim());
196
+ return [...new Set(queries)].slice(0, targetCount);
197
+ }
198
+ if (queryType === "how-to") {
199
+ const cleaned = question.replace(/[?!.]/g, "").trim();
200
+ const task = cleaned.replace(/^(?:how\s+(?:to|do\s+I|does\s+one|can\s+I|should\s+I)|steps\s+to)\s+/i, "").trim();
201
+ if (task.length < 5) return null;
202
+ const queries = [
203
+ `${task} tutorial guide`,
204
+ `${task} best practices`,
205
+ `${task} common mistakes pitfalls`,
206
+ `${task} examples production`,
207
+ `${task} step by step`,
208
+ `${task} tools libraries`,
209
+ `${task} troubleshooting`
210
+ ];
211
+ return [...new Set(queries)].slice(0, targetCount);
212
+ }
213
+ if (queryType === "concept") {
214
+ const cleaned = question.replace(/[?!.]/g, "").trim();
215
+ const concept = cleaned.replace(/^(?:what\s+(?:is|are)|explain|overview\s+of|describe)\s+/i, "").trim();
216
+ if (concept.length < 3) return null;
217
+ const queries = [
218
+ `${concept} definition overview`,
219
+ `${concept} how it works architecture`,
220
+ `${concept} use cases applications`,
221
+ `${concept} alternatives comparison`,
222
+ `${concept} advantages disadvantages`,
223
+ `${concept} examples real world`,
224
+ `${concept} best practices`
225
+ ];
226
+ return [...new Set(queries)].slice(0, targetCount);
227
+ }
228
+ return null;
229
+ }
230
+ function decomposeWithFallback(question, targetCount) {
231
+ const cleaned = question.trim();
232
+ if (!cleaned) {
233
+ return generateGenericQueries(targetCount);
234
+ }
235
+ const nounPhrases = extractNounPhrases(cleaned);
236
+ const clauseParts = splitAtClauseBoundaries(cleaned);
237
+ const candidates = [];
238
+ candidates.push(cleaned.length <= 200 ? cleaned : cleaned.slice(0, 200));
239
+ for (const clause of clauseParts) {
240
+ const trimmed = clause.trim();
241
+ if (trimmed.length > 3 && !candidates.includes(trimmed)) {
242
+ candidates.push(trimmed);
243
+ }
244
+ }
245
+ for (const np of nounPhrases) {
246
+ if (np.length > 3 && !candidates.includes(np)) {
247
+ candidates.push(np);
248
+ }
249
+ }
250
+ const keywordVariants = generateKeywordVariants(cleaned);
251
+ for (const variant of keywordVariants) {
252
+ if (!candidates.includes(variant)) {
253
+ candidates.push(variant);
254
+ }
255
+ }
256
+ while (candidates.length < targetCount) {
257
+ const idx = candidates.length;
258
+ candidates.push(`${cleaned} aspect ${idx + 1}`);
259
+ }
260
+ const unique = [...new Set(candidates)];
261
+ return unique.slice(0, targetCount);
262
+ }
263
+ function splitAtClauseBoundaries(text) {
264
+ const separators = [". ", "? ", "! ", "; ", ", and ", ", or ", " -- ", " - ", ", considering ", ", including "];
265
+ let parts = [text];
266
+ for (const sep of separators) {
267
+ if (parts.length >= 10) break;
268
+ parts = parts.flatMap((p) => {
269
+ const split = p.split(sep).map((s) => s.trim()).filter(Boolean);
270
+ return split.length > 1 ? split : [p];
271
+ });
272
+ }
273
+ return parts;
274
+ }
275
+ function extractNounPhrases(text) {
276
+ const stopWords = /* @__PURE__ */ new Set([
277
+ "the",
278
+ "a",
279
+ "an",
280
+ "is",
281
+ "are",
282
+ "was",
283
+ "were",
284
+ "be",
285
+ "been",
286
+ "being",
287
+ "have",
288
+ "has",
289
+ "had",
290
+ "do",
291
+ "does",
292
+ "did",
293
+ "will",
294
+ "would",
295
+ "could",
296
+ "should",
297
+ "may",
298
+ "might",
299
+ "can",
300
+ "shall",
301
+ "to",
302
+ "of",
303
+ "in",
304
+ "for",
305
+ "on",
306
+ "with",
307
+ "at",
308
+ "by",
309
+ "from",
310
+ "as",
311
+ "into",
312
+ "through",
313
+ "during",
314
+ "before",
315
+ "after",
316
+ "above",
317
+ "below",
318
+ "between",
319
+ "out",
320
+ "off",
321
+ "over",
322
+ "under",
323
+ "again",
324
+ "further",
325
+ "then",
326
+ "once",
327
+ "and",
328
+ "but",
329
+ "or",
330
+ "nor",
331
+ "not",
332
+ "so",
333
+ "yet",
334
+ "both",
335
+ "either",
336
+ "neither",
337
+ "each",
338
+ "every",
339
+ "all",
340
+ "any",
341
+ "few",
342
+ "more",
343
+ "most",
344
+ "other",
345
+ "some",
346
+ "such",
347
+ "no",
348
+ "only",
349
+ "own",
350
+ "same",
351
+ "than",
352
+ "too",
353
+ "very",
354
+ "what",
355
+ "how",
356
+ "why",
357
+ "when",
358
+ "where",
359
+ "which",
360
+ "who",
361
+ "whom",
362
+ "this",
363
+ "that",
364
+ "these",
365
+ "those",
366
+ "i",
367
+ "me",
368
+ "my",
369
+ "we",
370
+ "our",
371
+ "you",
372
+ "your",
373
+ "he",
374
+ "him",
375
+ "his",
376
+ "she",
377
+ "her",
378
+ "it",
379
+ "its",
380
+ "they",
381
+ "them",
382
+ "their",
383
+ "vs",
384
+ "versus",
385
+ "compare",
386
+ "compared",
387
+ "comparison"
388
+ ]);
389
+ const words = text.replace(/[?!.,;:'"()\[\]{}]/g, " ").split(/\s+/).filter(Boolean);
390
+ const contentWords = words.filter((w) => !stopWords.has(w.toLowerCase()));
391
+ const phrases = [];
392
+ for (let i = 0; i < contentWords.length; i++) {
393
+ for (let len = 2; len <= Math.min(4, contentWords.length - i); len++) {
394
+ const phrase = contentWords.slice(i, i + len).join(" ");
395
+ if (phrase.length > 5) {
396
+ phrases.push(phrase);
397
+ }
398
+ }
399
+ }
400
+ return [...new Set(phrases)];
401
+ }
402
+ function generateKeywordVariants(question) {
403
+ const variants = [];
404
+ const cleaned = question.replace(/[?!.]/g, "").trim();
405
+ const words = cleaned.split(/\s+/).filter((w) => w.length > 2);
406
+ if (words.length >= 3) {
407
+ variants.push(words.slice(0, Math.ceil(words.length / 2)).join(" "));
408
+ variants.push(words.slice(Math.floor(words.length / 2)).join(" "));
409
+ }
410
+ const questionPatterns = [
411
+ /^what\s+(are|is)\s+/i,
412
+ /^how\s+(do|does|to|can)\s+/i,
413
+ /^why\s+(do|does|is|are)\s+/i,
414
+ /^when\s+(do|does|should)\s+/i,
415
+ /^compare\s+/i,
416
+ /^explain\s+/i
417
+ ];
418
+ for (const pat of questionPatterns) {
419
+ const stripped = cleaned.replace(pat, "").trim();
420
+ if (stripped !== cleaned && stripped.length > 5) {
421
+ variants.push(stripped);
422
+ break;
423
+ }
424
+ }
425
+ return variants;
426
+ }
427
+ function generateGenericQueries(count) {
428
+ const queries = [];
429
+ for (let i = 0; i < count; i++) {
430
+ queries.push(`topic ${i + 1}`);
431
+ }
432
+ return queries;
433
+ }
434
+ export {
435
+ decomposeQuestion,
436
+ detectQueryType,
437
+ extractComparisonEntities
438
+ };
439
+ //# sourceMappingURL=decompose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/research/decompose.ts"],"sourcesContent":["import { createLogger } from '../logger.js';\nimport {\n type SamplingCapableServer,\n requestSampling,\n checkSamplingSupport,\n} from '../search/sampling.js';\n\nconst log = createLogger('research');\n\nconst DEPTH_SUB_QUERY_COUNT: Record<string, number> = {\n quick: 2,\n standard: 4,\n comprehensive: 7,\n};\n\nexport type QueryType = 'comparison' | 'how-to' | 'concept' | 'general';\n\nexport interface DecomposeResult {\n subQueries: string[];\n samplingUsed: boolean;\n queryType: QueryType;\n}\n\nexport async function decomposeQuestion(\n question: string,\n depth: 'quick' | 'standard' | 'comprehensive',\n server?: SamplingCapableServer,\n): Promise<DecomposeResult> {\n const targetCount = DEPTH_SUB_QUERY_COUNT[depth] ?? 4;\n const queryType = detectQueryType(question);\n\n if (server) {\n try {\n const result = await decomposeWithSampling(question, targetCount, server);\n if (result) {\n return { subQueries: result, samplingUsed: true, queryType };\n }\n } catch (err) {\n log.warn('sampling decomposition failed, using fallback', {\n error: err instanceof Error ? err.message : String(err),\n });\n }\n }\n\n const templateQueries = decomposeWithTemplate(question, queryType, targetCount);\n if (templateQueries && templateQueries.length >= targetCount) {\n return { subQueries: templateQueries, samplingUsed: false, queryType };\n }\n\n // Template produced some queries but not enough — supplement with fallback\n if (templateQueries && templateQueries.length > 0) {\n const fallback = decomposeWithFallback(question, targetCount);\n const merged = [...templateQueries];\n const seen = new Set(merged.map(q => q.toLowerCase()));\n for (const q of fallback) {\n if (merged.length >= targetCount) break;\n if (!seen.has(q.toLowerCase())) {\n merged.push(q);\n seen.add(q.toLowerCase());\n }\n }\n return { subQueries: merged.slice(0, targetCount), samplingUsed: false, queryType };\n }\n\n const fallback = decomposeWithFallback(question, targetCount);\n return { subQueries: fallback, samplingUsed: false, queryType };\n}\n\nasync function decomposeWithSampling(\n question: string,\n targetCount: number,\n server: SamplingCapableServer,\n): Promise<string[] | null> {\n try {\n if (!checkSamplingSupport(server)) {\n log.debug('client does not support sampling');\n return null;\n }\n\n const prompt = `You are a research assistant. Break this question into exactly ${targetCount} distinct search queries that cover different aspects of the topic. Return a JSON object with a \"subQueries\" array of strings. Each query should be a concise search-engine-ready phrase (not a full sentence). Cover different angles: definitions, comparisons, current state, best practices, etc.\n\nQuestion: ${question}\n\nRespond with ONLY valid JSON: {\"subQueries\": [\"query1\", \"query2\", ...]}`;\n\n const response = await requestSampling(\n server,\n [{ role: 'user', content: { type: 'text', text: prompt } }],\n 500,\n );\n\n if (!response?.content?.text) {\n log.debug('sampling returned empty response');\n return null;\n }\n\n const text = response.content.text.trim();\n let parsed: unknown;\n try {\n parsed = JSON.parse(text);\n } catch {\n const jsonMatch = text.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) {\n try {\n parsed = JSON.parse(jsonMatch[0]);\n } catch {\n log.debug('could not extract JSON from sampling response');\n return null;\n }\n } else {\n return null;\n }\n }\n\n if (\n typeof parsed !== 'object' ||\n parsed === null ||\n !Array.isArray((parsed as Record<string, unknown>).subQueries)\n ) {\n log.debug('sampling response missing subQueries array');\n return null;\n }\n\n const subQueries = (parsed as { subQueries: unknown[] }).subQueries\n .filter((q): q is string => typeof q === 'string' && q.trim().length > 0)\n .map((q) => q.trim());\n\n if (subQueries.length < targetCount) {\n log.debug('sampling returned fewer sub-queries than requested', {\n expected: targetCount,\n got: subQueries.length,\n });\n return null;\n }\n\n return subQueries.slice(0, targetCount);\n } catch (err) {\n log.debug('sampling request failed', {\n error: err instanceof Error ? err.message : String(err),\n });\n return null;\n }\n}\n\nexport function detectQueryType(question: string): QueryType {\n const q = question.trim().toLowerCase();\n\n // Comparison: \"X vs Y\", \"X versus Y\", \"compare X and Y\", \"X or Y for Z\"\n if (/\\bvs\\.?\\s/i.test(q) || /\\bversus\\b/i.test(q) || /^compare\\b/i.test(q)) {\n return 'comparison';\n }\n if (/\\b(?:difference|differences)\\s+between\\b/i.test(q)) {\n return 'comparison';\n }\n // \"X or Y for Z\" pattern (choice between alternatives)\n if (/\\b\\w+\\s+or\\s+\\w+\\s+for\\b/i.test(q)) {\n return 'comparison';\n }\n\n // How-to: \"how to ...\", \"how do I ...\", \"how can I ...\", \"steps to ...\"\n if (/^how\\s+(?:to|do|does|can|should)\\b/i.test(q) || /^steps\\s+to\\b/i.test(q)) {\n return 'how-to';\n }\n\n // Concept: \"what is ...\", \"explain ...\", \"overview of ...\"\n if (/^(?:what\\s+(?:is|are)|explain|overview\\s+of|describe)\\b/i.test(q)) {\n return 'concept';\n }\n\n return 'general';\n}\n\n// Generic category nouns that often pad onto a proper entity name when the\n// user phrases a question like \"differences between Bun and Deno runtimes\".\n// We strip them as a trailing token so entities resolve to \"Bun\"/\"Deno\".\nconst TRAILING_CATEGORY_NOUNS = new Set([\n 'runtime', 'runtimes',\n 'framework', 'frameworks',\n 'library', 'libraries',\n 'tool', 'tools',\n 'language', 'languages',\n 'database', 'databases', 'db', 'dbs',\n 'platform', 'platforms',\n 'service', 'services',\n 'engine', 'engines',\n 'editor', 'editors',\n 'ide', 'ides',\n 'package', 'packages',\n]);\n\nfunction trimCategorySuffix(entity: string): string {\n const tokens = entity.trim().split(/\\s+/);\n while (tokens.length > 1) {\n const last = tokens[tokens.length - 1].toLowerCase();\n if (!TRAILING_CATEGORY_NOUNS.has(last)) break;\n tokens.pop();\n }\n return tokens.join(' ');\n}\n\nexport function extractComparisonEntities(question: string): { entities: string[]; context: string } {\n // Strip common question prefixes so \"how does X vs Y\" still matches\n const cleaned = question\n .replace(/[?!.]/g, '')\n .replace(/^(?:how\\s+(?:does|do|is|are|about)|what\\s+(?:is|are)\\s+(?:the\\s+)?(?:difference|differences)\\s+(?:between)?|should\\s+I\\s+(?:use|choose)|which\\s+is\\s+better)\\s*/i, '')\n .trim();\n\n // \"X vs Y vs Z for/in/with context\"\n const vsMatch = cleaned.match(/^(.+?)\\s+(?:vs\\.?|versus)\\s+(.+?)(?:\\s+(?:vs\\.?|versus)\\s+(.+?))?(?:\\s+(?:for|in|with|when)\\s+(.+))?$/i);\n if (vsMatch) {\n const entities = [vsMatch[1], vsMatch[2], vsMatch[3]]\n .filter(Boolean)\n .map(e => trimCategorySuffix(e!.trim()));\n return { entities, context: vsMatch[4]?.trim() || '' };\n }\n\n // \"compare X and Y for context\" / \"compare X, Y, and Z\"\n const compareMatch = cleaned.match(/^compare\\s+(.+?)(?:\\s+(?:for|in|with|when)\\s+(.+))?$/i);\n if (compareMatch) {\n const entityPart = compareMatch[1];\n const entities = entityPart\n .split(/(?:,\\s*|\\s+and\\s+)/)\n .map(e => trimCategorySuffix(e.trim()))\n .filter(Boolean);\n return { entities, context: compareMatch[2]?.trim() || '' };\n }\n\n // \"differences between X and Y\"\n const diffMatch = cleaned.match(/differences?\\s+between\\s+(.+?)\\s+and\\s+(.+?)(?:\\s+(?:for|in|with)\\s+(.+))?$/i);\n if (diffMatch) {\n return {\n entities: [trimCategorySuffix(diffMatch[1].trim()), trimCategorySuffix(diffMatch[2].trim())],\n context: diffMatch[3]?.trim() || '',\n };\n }\n\n return { entities: [], context: '' };\n}\n\nfunction decomposeWithTemplate(question: string, queryType: QueryType, targetCount: number): string[] | null {\n if (queryType === 'comparison') {\n const { entities, context } = extractComparisonEntities(question);\n if (entities.length < 2) return null;\n\n const queries: string[] = [];\n\n // Per-entity queries\n for (const entity of entities) {\n queries.push(`${entity} ${context} features performance`.trim());\n }\n // Cross-comparison queries\n for (let i = 0; i < entities.length; i++) {\n for (let j = i + 1; j < entities.length; j++) {\n queries.push(`${entities[i]} vs ${entities[j]} ${context} comparison`.trim());\n }\n }\n // Ecosystem/adoption query\n queries.push(`${entities.join(' vs ')} which to choose ${context}`.trim());\n\n return [...new Set(queries)].slice(0, targetCount);\n }\n\n if (queryType === 'how-to') {\n const cleaned = question.replace(/[?!.]/g, '').trim();\n const task = cleaned.replace(/^(?:how\\s+(?:to|do\\s+I|does\\s+one|can\\s+I|should\\s+I)|steps\\s+to)\\s+/i, '').trim();\n if (task.length < 5) return null;\n\n const queries = [\n `${task} tutorial guide`,\n `${task} best practices`,\n `${task} common mistakes pitfalls`,\n `${task} examples production`,\n `${task} step by step`,\n `${task} tools libraries`,\n `${task} troubleshooting`,\n ];\n\n return [...new Set(queries)].slice(0, targetCount);\n }\n\n if (queryType === 'concept') {\n const cleaned = question.replace(/[?!.]/g, '').trim();\n const concept = cleaned.replace(/^(?:what\\s+(?:is|are)|explain|overview\\s+of|describe)\\s+/i, '').trim();\n if (concept.length < 3) return null;\n\n const queries = [\n `${concept} definition overview`,\n `${concept} how it works architecture`,\n `${concept} use cases applications`,\n `${concept} alternatives comparison`,\n `${concept} advantages disadvantages`,\n `${concept} examples real world`,\n `${concept} best practices`,\n ];\n\n return [...new Set(queries)].slice(0, targetCount);\n }\n\n return null;\n}\n\nfunction decomposeWithFallback(question: string, targetCount: number): string[] {\n const cleaned = question.trim();\n if (!cleaned) {\n return generateGenericQueries(targetCount);\n }\n\n const nounPhrases = extractNounPhrases(cleaned);\n const clauseParts = splitAtClauseBoundaries(cleaned);\n const candidates: string[] = [];\n\n candidates.push(cleaned.length <= 200 ? cleaned : cleaned.slice(0, 200));\n\n for (const clause of clauseParts) {\n const trimmed = clause.trim();\n if (trimmed.length > 3 && !candidates.includes(trimmed)) {\n candidates.push(trimmed);\n }\n }\n\n for (const np of nounPhrases) {\n if (np.length > 3 && !candidates.includes(np)) {\n candidates.push(np);\n }\n }\n\n const keywordVariants = generateKeywordVariants(cleaned);\n for (const variant of keywordVariants) {\n if (!candidates.includes(variant)) {\n candidates.push(variant);\n }\n }\n\n while (candidates.length < targetCount) {\n const idx = candidates.length;\n candidates.push(`${cleaned} aspect ${idx + 1}`);\n }\n\n const unique = [...new Set(candidates)];\n return unique.slice(0, targetCount);\n}\n\nfunction splitAtClauseBoundaries(text: string): string[] {\n const separators = ['. ', '? ', '! ', '; ', ', and ', ', or ', ' -- ', ' - ', ', considering ', ', including '];\n let parts = [text];\n\n for (const sep of separators) {\n if (parts.length >= 10) break;\n parts = parts.flatMap((p) => {\n const split = p.split(sep).map((s) => s.trim()).filter(Boolean);\n return split.length > 1 ? split : [p];\n });\n }\n\n return parts;\n}\n\nfunction extractNounPhrases(text: string): string[] {\n const stopWords = new Set([\n 'the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been', 'being',\n 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could',\n 'should', 'may', 'might', 'can', 'shall', 'to', 'of', 'in', 'for',\n 'on', 'with', 'at', 'by', 'from', 'as', 'into', 'through', 'during',\n 'before', 'after', 'above', 'below', 'between', 'out', 'off', 'over',\n 'under', 'again', 'further', 'then', 'once', 'and', 'but', 'or',\n 'nor', 'not', 'so', 'yet', 'both', 'either', 'neither', 'each',\n 'every', 'all', 'any', 'few', 'more', 'most', 'other', 'some',\n 'such', 'no', 'only', 'own', 'same', 'than', 'too', 'very',\n 'what', 'how', 'why', 'when', 'where', 'which', 'who', 'whom',\n 'this', 'that', 'these', 'those', 'i', 'me', 'my', 'we', 'our',\n 'you', 'your', 'he', 'him', 'his', 'she', 'her', 'it', 'its',\n 'they', 'them', 'their',\n 'vs', 'versus', 'compare', 'compared', 'comparison',\n ]);\n\n const words = text.replace(/[?!.,;:'\"()\\[\\]{}]/g, ' ').split(/\\s+/).filter(Boolean);\n const contentWords = words.filter((w) => !stopWords.has(w.toLowerCase()));\n const phrases: string[] = [];\n\n for (let i = 0; i < contentWords.length; i++) {\n for (let len = 2; len <= Math.min(4, contentWords.length - i); len++) {\n const phrase = contentWords.slice(i, i + len).join(' ');\n if (phrase.length > 5) {\n phrases.push(phrase);\n }\n }\n }\n\n return [...new Set(phrases)];\n}\n\nfunction generateKeywordVariants(question: string): string[] {\n const variants: string[] = [];\n const cleaned = question.replace(/[?!.]/g, '').trim();\n const words = cleaned.split(/\\s+/).filter((w) => w.length > 2);\n\n if (words.length >= 3) {\n variants.push(words.slice(0, Math.ceil(words.length / 2)).join(' '));\n variants.push(words.slice(Math.floor(words.length / 2)).join(' '));\n }\n\n const questionPatterns = [\n /^what\\s+(are|is)\\s+/i,\n /^how\\s+(do|does|to|can)\\s+/i,\n /^why\\s+(do|does|is|are)\\s+/i,\n /^when\\s+(do|does|should)\\s+/i,\n /^compare\\s+/i,\n /^explain\\s+/i,\n ];\n for (const pat of questionPatterns) {\n const stripped = cleaned.replace(pat, '').trim();\n if (stripped !== cleaned && stripped.length > 5) {\n variants.push(stripped);\n break;\n }\n }\n\n return variants;\n}\n\nfunction generateGenericQueries(count: number): string[] {\n const queries: string[] = [];\n for (let i = 0; i < count; i++) {\n queries.push(`topic ${i + 1}`);\n }\n return queries;\n}\n"],"mappings":"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","names":["fallback"]}
@@ -0,0 +1,5 @@
1
+ import { type SamplingCapableServer } from '../search/sampling.js';
2
+ import type { ResearchInput, ResearchOutput, SearchEngine } from '../types.js';
3
+ import type { SmartRouter } from '../fetch/router.js';
4
+ export declare function runResearchPipeline(input: ResearchInput, engines: SearchEngine[], router: SmartRouter, server?: SamplingCapableServer): Promise<ResearchOutput>;
5
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/research/pipeline.ts"],"names":[],"mappings":"AAcA,OAAO,EAAwB,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEzF,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EAEd,YAAY,EAEb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA2BtD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,cAAc,CAAC,CAwMzB"}