@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,344 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { existsSync, readFileSync, readdirSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { chromium, firefox, webkit } from "playwright";
5
+ import { getBootstrapState } from "../searxng/bootstrap.js";
6
+ import { isProcessAlive } from "../searxng/process.js";
7
+ import { getConfig } from "../config.js";
8
+ import { getRerankProvider } from "../providers/rerank-provider.js";
9
+ import { getEmbedProvider } from "../providers/embed-provider.js";
10
+ import { initDatabase, closeDatabase } from "../cache/db.js";
11
+ import { loadFeedConfig } from "../search/v1/rss/feed-config.js";
12
+ import { isTelemetryEnabled } from "./telemetry.js";
13
+ import { allProviders, providerEnvVar, selectProvider } from "../integrations/cloud/llm/select.js";
14
+ import { resolveModel, providerDefaultModel, providerModelEnvVar } from "../integrations/cloud/llm/model-select.js";
15
+ import { setLogSuppression } from "../logger.js";
16
+ function out(line = "") {
17
+ process.stderr.write(`${line}
18
+ `);
19
+ }
20
+ function checkPython() {
21
+ const r = spawnSync("python3", ["--version"], { encoding: "utf-8" });
22
+ if (r.status !== 0 || r.error) return { ok: false };
23
+ const match = (r.stdout || r.stderr || "").match(/Python (\d+\.\d+\.\d+)/);
24
+ return { ok: true, version: match?.[1] };
25
+ }
26
+ function checkDocker() {
27
+ const r = spawnSync("docker", ["--version"], { encoding: "utf-8" });
28
+ if (r.status !== 0 || r.error) return { ok: false };
29
+ return { ok: true, version: (r.stdout || "").trim() };
30
+ }
31
+ function checkPlaywright() {
32
+ let installed = false;
33
+ let version;
34
+ try {
35
+ const r = spawnSync("npx", ["playwright", "--version"], { encoding: "utf-8", timeout: 5e3 });
36
+ if (r.status === 0) {
37
+ installed = true;
38
+ const m = r.stdout.match(/(\d+\.\d+\.\d+)/);
39
+ version = m?.[1];
40
+ }
41
+ } catch {
42
+ }
43
+ const probeBrowser = (api) => {
44
+ try {
45
+ const exec = api.executablePath();
46
+ return { ok: !!exec && existsSync(exec), path: exec };
47
+ } catch {
48
+ return { ok: false };
49
+ }
50
+ };
51
+ const chromiumProbe = probeBrowser(chromium);
52
+ const firefoxProbe = probeBrowser(firefox);
53
+ const webkitProbe = probeBrowser(webkit);
54
+ return {
55
+ installed,
56
+ version,
57
+ browsers: {
58
+ chromium: chromiumProbe.ok,
59
+ chromiumHeadlessShell: chromiumProbe.ok,
60
+ firefox: firefoxProbe.ok,
61
+ webkit: webkitProbe.ok
62
+ },
63
+ chromiumPath: chromiumProbe.path
64
+ };
65
+ }
66
+ async function checkReranker() {
67
+ try {
68
+ const provider = await getRerankProvider();
69
+ const docs = [
70
+ "React Server Components render on the server.",
71
+ "Next.js App Router uses RSC by default.",
72
+ "Bananas are a popular fruit.",
73
+ "TypeScript adds static types to JavaScript.",
74
+ "The capital of France is Paris."
75
+ ].map((text, i) => ({ id: String(i), text }));
76
+ const t0 = Date.now();
77
+ await provider.rerank("react server components", docs);
78
+ const rerankMs = Date.now() - t0;
79
+ return { installed: true, modelId: provider.modelId, rerankMs };
80
+ } catch (err) {
81
+ return { installed: false, reason: err instanceof Error ? err.message : "rerank failed" };
82
+ }
83
+ }
84
+ function checkFastembedCache(dataDir) {
85
+ const cacheDir = join(dataDir, "fastembed");
86
+ if (!existsSync(cacheDir)) {
87
+ return { installed: false, reason: "cache dir missing \u2014 run `wigolo warmup --embeddings`" };
88
+ }
89
+ try {
90
+ const entries = readdirSync(cacheDir);
91
+ if (entries.length === 0) {
92
+ return { installed: false, reason: "cache empty \u2014 run `wigolo warmup --embeddings`" };
93
+ }
94
+ return { installed: true };
95
+ } catch (err) {
96
+ return { installed: false, reason: err instanceof Error ? err.message : "unknown error" };
97
+ }
98
+ }
99
+ function humanRetry(nextRetryAt) {
100
+ if (!nextRetryAt) return "not scheduled";
101
+ const when = new Date(nextRetryAt);
102
+ const mins = Math.round((when.getTime() - Date.now()) / 6e4);
103
+ if (mins < 0) return `${nextRetryAt} (ready now)`;
104
+ if (mins < 60) return `${nextRetryAt} (in ${mins} minutes)`;
105
+ const hrs = Math.round(mins / 60);
106
+ return `${nextRetryAt} (in ${hrs} hours)`;
107
+ }
108
+ async function runDoctor(dataDir) {
109
+ setLogSuppression("warn");
110
+ try {
111
+ return await runDoctorInner(dataDir);
112
+ } finally {
113
+ setLogSuppression(null);
114
+ }
115
+ }
116
+ async function runDoctorInner(dataDir) {
117
+ let degraded = false;
118
+ out(`[wigolo doctor] Data dir: ${dataDir}`);
119
+ out("");
120
+ const py = checkPython();
121
+ const dk = checkDocker();
122
+ out("[wigolo doctor] Runtime:");
123
+ out(` Python 3: ${py.ok ? `available (${py.version ?? "unknown"})` : "not available"}`);
124
+ out(` Docker: ${dk.ok ? `available (${dk.version})` : "not available"}`);
125
+ if (!py.ok && !dk.ok) degraded = true;
126
+ out("");
127
+ const pw = checkPlaywright();
128
+ out("[wigolo doctor] Browser engine:");
129
+ out(` Installation: ${pw.installed ? `installed${pw.version ? ` (v${pw.version})` : ""}` : "not installed"}`);
130
+ out(` Browsers: chromium ${pw.browsers.chromium ? "OK" : "missing"} firefox ${pw.browsers.firefox ? "OK" : "missing"} webkit ${pw.browsers.webkit ? "OK" : "missing"}`);
131
+ if (pw.chromiumPath) {
132
+ out(` Chromium path: ${pw.chromiumPath}${pw.browsers.chromium ? "" : " (missing on disk)"}`);
133
+ }
134
+ if (!pw.browsers.chromium) {
135
+ out(" Hint: run 'npx playwright install chromium' \u2014 JS-rendered pages will fail without it");
136
+ degraded = true;
137
+ }
138
+ out("");
139
+ const reranker = await checkReranker();
140
+ const embeddings = checkFastembedCache(dataDir);
141
+ out("[wigolo doctor] Optional components:");
142
+ if (reranker.installed) {
143
+ const timing = reranker.rerankMs !== void 0 ? ` \u2014 5-doc rerank ${reranker.rerankMs}ms` : "";
144
+ out(` ML reranker: installed (${reranker.modelId})${timing}`);
145
+ } else {
146
+ out(` ML reranker: not installed${reranker.reason ? ` (${reranker.reason})` : ""}`);
147
+ }
148
+ if (embeddings.installed) {
149
+ out(` Embeddings model: installed (fastembed BGE-small-en-v1.5)`);
150
+ } else {
151
+ out(` Embeddings model: not installed${embeddings.reason ? ` (${embeddings.reason})` : ""}`);
152
+ }
153
+ out("");
154
+ out("[wigolo doctor] LLM (extract / research / agent):");
155
+ const cfg = getConfig();
156
+ const active = selectProvider(process.env);
157
+ for (const p of allProviders()) {
158
+ const envVar = providerEnvVar(p);
159
+ const set = !!process.env[envVar];
160
+ const activeMark = p === active ? " <- active" : "";
161
+ out(
162
+ ` ${p.padEnd(10)} ${set ? "configured" : "no key"} (${envVar}${set ? "" : " unset"})${activeMark}`
163
+ );
164
+ if (set) {
165
+ const model = resolveModel(p, void 0, process.env);
166
+ const modelEnv = providerModelEnvVar(p);
167
+ const usingDefault = model === providerDefaultModel(p) && !process.env[modelEnv] && !process.env.WIGOLO_LLM_MODEL;
168
+ out(` model: ${model}${usingDefault ? " (default)" : ""}`);
169
+ }
170
+ }
171
+ if (cfg.llmProvider) {
172
+ if (cfg.llmProvider.startsWith("http://") || cfg.llmProvider.startsWith("https://")) {
173
+ out(` override: custom URL (${cfg.llmProvider})`);
174
+ } else {
175
+ out(` override: WIGOLO_LLM_PROVIDER=${cfg.llmProvider}`);
176
+ }
177
+ }
178
+ if (process.env.WIGOLO_LLM_MODEL) {
179
+ out(` WIGOLO_LLM_MODEL: ${process.env.WIGOLO_LLM_MODEL} (universal override)`);
180
+ }
181
+ out(` cache TTL: ${cfg.llmCacheTtlDays} days`);
182
+ out(` per-request: ${cfg.llmMaxCallsPerRequest} call(s) max`);
183
+ out("");
184
+ const state = getBootstrapState(dataDir);
185
+ out("[wigolo doctor] Search engine:");
186
+ if (!state) {
187
+ out(" status: not bootstrapped \u2014 run `npx @staticn0va/wigolo warmup`");
188
+ degraded = true;
189
+ } else if (state.status === "ready") {
190
+ out(` status: ready`);
191
+ out(` path: ${state.searxngPath ?? "unknown"}`);
192
+ } else {
193
+ out(` status: ${state.status}`);
194
+ if (state.attempts !== void 0) out(` attempts: ${state.attempts} / 3`);
195
+ if (state.lastAttemptAt) out(` lastAttemptAt: ${state.lastAttemptAt}`);
196
+ if (state.nextRetryAt || state.status === "failed") out(` nextRetryAt: ${humanRetry(state.nextRetryAt)}`);
197
+ if (state.lastError?.command) out(` command: ${state.lastError.command}`);
198
+ if (state.lastError?.exitCode !== void 0) out(` exit code: ${state.lastError.exitCode}`);
199
+ if (state.lastError?.message) out(` message: ${state.lastError.message}`);
200
+ if (state.lastError?.stderr) {
201
+ out(" stderr:");
202
+ for (const line of state.lastError.stderr.split("\n").slice(0, 20)) out(` ${line}`);
203
+ }
204
+ degraded = true;
205
+ }
206
+ out("");
207
+ const lockPath = join(dataDir, "searxng.lock");
208
+ if (existsSync(lockPath)) {
209
+ try {
210
+ const lock = JSON.parse(readFileSync(lockPath, "utf-8"));
211
+ if (lock.pid && isProcessAlive(lock.pid)) {
212
+ out(`[wigolo doctor] Search engine process: running (pid ${lock.pid}, port ${lock.port ?? "?"})`);
213
+ } else {
214
+ out("[wigolo doctor] Search engine process: stale lock (process exited) \u2014 will be cleaned on next start");
215
+ }
216
+ } catch {
217
+ out("[wigolo doctor] Search engine process: lock file unparseable \u2014 will be cleaned on next start");
218
+ }
219
+ } else {
220
+ out("[wigolo doctor] Search engine process: not running (starts on-demand with MCP server)");
221
+ }
222
+ if (state?.status === "failed") {
223
+ out("");
224
+ out("[wigolo doctor] Recovery:");
225
+ if (state.nextRetryAt) out(` - Wait until next auto-retry (${humanRetry(state.nextRetryAt)}), or`);
226
+ out(` - Force retry now: npx @staticn0va/wigolo warmup --force`);
227
+ }
228
+ await checkV1Embeddings();
229
+ await checkSqliteVec(dataDir);
230
+ checkRssFeeds(dataDir);
231
+ checkTelemetryStatus();
232
+ out("");
233
+ out(`[wigolo doctor] Overall: ${degraded ? "DEGRADED" : "OK"}`);
234
+ return degraded ? 1 : 0;
235
+ }
236
+ async function checkV1Embeddings() {
237
+ out("");
238
+ out("[wigolo doctor] V1 embeddings:");
239
+ try {
240
+ const provider = await getEmbedProvider();
241
+ out(` provider: ready (fastembed ${provider.modelId}, dim=${provider.dim})`);
242
+ } catch (err) {
243
+ const msg = err instanceof Error ? err.message : String(err);
244
+ out(` provider: not ready (${msg.slice(0, 80)})`);
245
+ }
246
+ }
247
+ async function checkSqliteVec(dataDir) {
248
+ out("");
249
+ out("[wigolo doctor] V1 sqlite-vec:");
250
+ let opened = false;
251
+ try {
252
+ const db = initDatabase(join(dataDir, "wigolo.db"));
253
+ opened = true;
254
+ try {
255
+ const row = db.prepare("SELECT vec_version() AS v").get();
256
+ const v = row?.v ?? "unknown";
257
+ out(` extension: loaded (vec_version ${v})`);
258
+ } catch {
259
+ out(" extension: not loaded (run warmup to load on next start)");
260
+ }
261
+ } catch (err) {
262
+ const msg = err instanceof Error ? err.message : String(err);
263
+ out(` extension: (check failed: ${msg.slice(0, 80)})`);
264
+ } finally {
265
+ if (opened) {
266
+ try {
267
+ closeDatabase();
268
+ } catch {
269
+ }
270
+ }
271
+ }
272
+ }
273
+ function checkRssFeeds(dataDir) {
274
+ out("");
275
+ out("[wigolo doctor] RSS feeds:");
276
+ try {
277
+ const { feeds } = loadFeedConfig({ dataDir });
278
+ if (feeds.length === 0) {
279
+ out(" feeds: none configured (set WIGOLO_RSS_FEEDS to opt in)");
280
+ return;
281
+ }
282
+ let db = null;
283
+ try {
284
+ db = initDatabase(join(dataDir, "wigolo.db"));
285
+ } catch (err) {
286
+ const msg = err instanceof Error ? err.message : String(err);
287
+ out(` feeds: ${feeds.length} configured (db unreadable: ${msg.slice(0, 60)})`);
288
+ return;
289
+ }
290
+ let stmt = null;
291
+ try {
292
+ stmt = db.prepare(
293
+ "SELECT COUNT(*) AS n, MAX(fetched_at) AS last_at FROM feed_items WHERE feed_url = ?"
294
+ );
295
+ } catch {
296
+ }
297
+ try {
298
+ const now = Date.now();
299
+ for (const feed of feeds) {
300
+ let line;
301
+ if (!stmt) {
302
+ line = ` ${feed.url} 0 items [never polled]`;
303
+ } else {
304
+ try {
305
+ const row = stmt.get(feed.url);
306
+ const n = row?.n ?? 0;
307
+ const lastAt = row?.last_at ?? null;
308
+ if (!lastAt) {
309
+ line = ` ${feed.url} ${n} items [never polled]`;
310
+ } else {
311
+ const ageMs = now - new Date(lastAt).getTime();
312
+ const ageHr = ageMs / 36e5;
313
+ const fresh = ageHr <= 24 ? "fresh" : "stale";
314
+ const ageLabel = ageHr < 1 ? `${Math.max(0, Math.round(ageMs / 6e4))}m ago` : `${Math.round(ageHr)}h ago`;
315
+ const day = lastAt.slice(0, 10);
316
+ line = ` ${feed.url} ${n} items, last fetched ${day} (${ageLabel}) [${fresh}]`;
317
+ }
318
+ } catch (err) {
319
+ const msg = err instanceof Error ? err.message : String(err);
320
+ line = ` ${feed.url} (check failed: ${msg.slice(0, 60)})`;
321
+ }
322
+ }
323
+ out(line);
324
+ }
325
+ } finally {
326
+ try {
327
+ closeDatabase();
328
+ } catch {
329
+ }
330
+ }
331
+ } catch (err) {
332
+ const msg = err instanceof Error ? err.message : String(err);
333
+ out(` (check failed: ${msg.slice(0, 80)})`);
334
+ }
335
+ }
336
+ function checkTelemetryStatus() {
337
+ out("");
338
+ const state = isTelemetryEnabled() ? "enabled" : "disabled";
339
+ out(`[wigolo doctor] Telemetry: opt-in ${state} (WIGOLO_TELEMETRY=1 to opt in)`);
340
+ }
341
+ export {
342
+ runDoctor
343
+ };
344
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli/doctor.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process';\nimport { existsSync, readFileSync, readdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { chromium, firefox, webkit } from 'playwright';\nimport { getBootstrapState, type BootstrapState } from '../searxng/bootstrap.js';\nimport { isProcessAlive } from '../searxng/process.js';\nimport { getConfig } from '../config.js';\nimport { getRerankProvider } from '../providers/rerank-provider.js';\nimport { getEmbedProvider } from '../providers/embed-provider.js';\nimport { initDatabase, closeDatabase } from '../cache/db.js';\nimport { loadFeedConfig } from '../search/v1/rss/feed-config.js';\nimport { isTelemetryEnabled } from './telemetry.js';\nimport { allProviders, providerEnvVar, selectProvider } from '../integrations/cloud/llm/select.js';\nimport { resolveModel, providerDefaultModel, providerModelEnvVar } from '../integrations/cloud/llm/model-select.js';\nimport { setLogSuppression } from '../logger.js';\n\nfunction out(line = ''): void { process.stderr.write(`${line}\\n`); }\n\nfunction checkPython(): { ok: boolean; version?: string } {\n const r = spawnSync('python3', ['--version'], { encoding: 'utf-8' });\n if (r.status !== 0 || r.error) return { ok: false };\n const match = (r.stdout || r.stderr || '').match(/Python (\\d+\\.\\d+\\.\\d+)/);\n return { ok: true, version: match?.[1] };\n}\n\nfunction checkDocker(): { ok: boolean; version?: string } {\n const r = spawnSync('docker', ['--version'], { encoding: 'utf-8' });\n if (r.status !== 0 || r.error) return { ok: false };\n return { ok: true, version: (r.stdout || '').trim() };\n}\n\nfunction checkPlaywright(): { installed: boolean; version?: string; browsers: { chromium: boolean; chromiumHeadlessShell: boolean; firefox: boolean; webkit: boolean }; chromiumPath?: string } {\n let installed = false;\n let version: string | undefined;\n try {\n const r = spawnSync('npx', ['playwright', '--version'], { encoding: 'utf-8', timeout: 5000 });\n if (r.status === 0) {\n installed = true;\n const m = r.stdout.match(/(\\d+\\.\\d+\\.\\d+)/);\n version = m?.[1];\n }\n } catch { /* ignore */ }\n\n // Probe browser readiness by resolving the bundled Playwright's actual\n // executable path and checking the file on disk. This matches what fetch\n // uses via chromium.launch(), so doctor cannot lie about parity.\n const probeBrowser = (api: { executablePath(): string }): { ok: boolean; path?: string } => {\n try {\n const exec = api.executablePath();\n return { ok: !!exec && existsSync(exec), path: exec };\n } catch {\n return { ok: false };\n }\n };\n\n const chromiumProbe = probeBrowser(chromium);\n const firefoxProbe = probeBrowser(firefox);\n const webkitProbe = probeBrowser(webkit);\n\n // headless-shell uses chromium binary or a sibling; presence implied when\n // chromium ok. If a user explicitly needs the shell, fetch will surface\n // playwright_not_installed regardless.\n return {\n installed,\n version,\n browsers: {\n chromium: chromiumProbe.ok,\n chromiumHeadlessShell: chromiumProbe.ok,\n firefox: firefoxProbe.ok,\n webkit: webkitProbe.ok,\n },\n chromiumPath: chromiumProbe.path,\n };\n}\n\nasync function checkReranker(\n): Promise<{ installed: boolean; modelId?: string; rerankMs?: number; reason?: string }> {\n try {\n const provider = await getRerankProvider();\n const docs = [\n 'React Server Components render on the server.',\n 'Next.js App Router uses RSC by default.',\n 'Bananas are a popular fruit.',\n 'TypeScript adds static types to JavaScript.',\n 'The capital of France is Paris.',\n ].map((text, i) => ({ id: String(i), text }));\n const t0 = Date.now();\n await provider.rerank('react server components', docs);\n const rerankMs = Date.now() - t0;\n return { installed: true, modelId: provider.modelId, rerankMs };\n } catch (err) {\n return { installed: false, reason: err instanceof Error ? err.message : 'rerank failed' };\n }\n}\n\nfunction checkFastembedCache(dataDir: string): { installed: boolean; reason?: string } {\n const cacheDir = join(dataDir, 'fastembed');\n if (!existsSync(cacheDir)) {\n return { installed: false, reason: 'cache dir missing — run `wigolo warmup --embeddings`' };\n }\n try {\n // First-run downloads create a model subdir with ONNX assets. Empty cache\n // dir means the model has not been fetched yet.\n const entries = readdirSync(cacheDir);\n if (entries.length === 0) {\n return { installed: false, reason: 'cache empty — run `wigolo warmup --embeddings`' };\n }\n return { installed: true };\n } catch (err) {\n return { installed: false, reason: err instanceof Error ? err.message : 'unknown error' };\n }\n}\n\nfunction humanRetry(nextRetryAt?: string): string {\n if (!nextRetryAt) return 'not scheduled';\n const when = new Date(nextRetryAt);\n const mins = Math.round((when.getTime() - Date.now()) / 60_000);\n if (mins < 0) return `${nextRetryAt} (ready now)`;\n if (mins < 60) return `${nextRetryAt} (in ${mins} minutes)`;\n const hrs = Math.round(mins / 60);\n return `${nextRetryAt} (in ${hrs} hours)`;\n}\n\n/**\n * Exit code contract:\n * - 0 when all required components OK, or only optional packages (content extractor/ML reranker) missing.\n * - 1 when any required component is degraded: Python missing, browser missing,\n * search engine bootstrap failed/no_runtime, or search engine process supposed to be up but isn't.\n */\nexport async function runDoctor(dataDir: string): Promise<number> {\n // Doctor produces its own human-readable diagnostic — suppress info/debug\n // logger noise from the modules it touches so the output stays clean.\n // Warnings and errors still come through.\n setLogSuppression('warn');\n try {\n return await runDoctorInner(dataDir);\n } finally {\n setLogSuppression(null);\n }\n}\n\nasync function runDoctorInner(dataDir: string): Promise<number> {\n let degraded = false;\n\n out(`[wigolo doctor] Data dir: ${dataDir}`);\n out('');\n\n const py = checkPython();\n const dk = checkDocker();\n out('[wigolo doctor] Runtime:');\n out(` Python 3: ${py.ok ? `available (${py.version ?? 'unknown'})` : 'not available'}`);\n out(` Docker: ${dk.ok ? `available (${dk.version})` : 'not available'}`);\n if (!py.ok && !dk.ok) degraded = true;\n\n out('');\n const pw = checkPlaywright();\n out('[wigolo doctor] Browser engine:');\n out(` Installation: ${pw.installed ? `installed${pw.version ? ` (v${pw.version})` : ''}` : 'not installed'}`);\n out(` Browsers: chromium ${pw.browsers.chromium ? 'OK' : 'missing'} firefox ${pw.browsers.firefox ? 'OK' : 'missing'} webkit ${pw.browsers.webkit ? 'OK' : 'missing'}`);\n if (pw.chromiumPath) {\n out(` Chromium path: ${pw.chromiumPath}${pw.browsers.chromium ? '' : ' (missing on disk)'}`);\n }\n if (!pw.browsers.chromium) {\n out(\" Hint: run 'npx playwright install chromium' — JS-rendered pages will fail without it\");\n degraded = true;\n }\n\n out('');\n const reranker = await checkReranker();\n const embeddings = checkFastembedCache(dataDir);\n out('[wigolo doctor] Optional components:');\n if (reranker.installed) {\n const timing = reranker.rerankMs !== undefined ? ` — 5-doc rerank ${reranker.rerankMs}ms` : '';\n out(` ML reranker: installed (${reranker.modelId})${timing}`);\n } else {\n out(` ML reranker: not installed${reranker.reason ? ` (${reranker.reason})` : ''}`);\n }\n if (embeddings.installed) {\n out(` Embeddings model: installed (fastembed BGE-small-en-v1.5)`);\n } else {\n out(` Embeddings model: not installed${embeddings.reason ? ` (${embeddings.reason})` : ''}`);\n }\n\n out('');\n out('[wigolo doctor] LLM (extract / research / agent):');\n const cfg = getConfig();\n const active = selectProvider(process.env);\n for (const p of allProviders()) {\n const envVar = providerEnvVar(p);\n const set = !!process.env[envVar];\n const activeMark = p === active ? ' <- active' : '';\n out(\n ` ${p.padEnd(10)} ${set ? 'configured' : 'no key'} (${envVar}${set ? '' : ' unset'})${activeMark}`,\n );\n if (set) {\n const model = resolveModel(p, undefined, process.env);\n const modelEnv = providerModelEnvVar(p);\n const usingDefault = model === providerDefaultModel(p) && !process.env[modelEnv] && !process.env.WIGOLO_LLM_MODEL;\n out(` model: ${model}${usingDefault ? ' (default)' : ''}`);\n }\n }\n if (cfg.llmProvider) {\n if (cfg.llmProvider.startsWith('http://') || cfg.llmProvider.startsWith('https://')) {\n out(` override: custom URL (${cfg.llmProvider})`);\n } else {\n out(` override: WIGOLO_LLM_PROVIDER=${cfg.llmProvider}`);\n }\n }\n if (process.env.WIGOLO_LLM_MODEL) {\n out(` WIGOLO_LLM_MODEL: ${process.env.WIGOLO_LLM_MODEL} (universal override)`);\n }\n out(` cache TTL: ${cfg.llmCacheTtlDays} days`);\n out(` per-request: ${cfg.llmMaxCallsPerRequest} call(s) max`);\n\n out('');\n const state = getBootstrapState(dataDir) as BootstrapState | null;\n out('[wigolo doctor] Search engine:');\n if (!state) {\n out(' status: not bootstrapped — run `npx @staticn0va/wigolo warmup`');\n degraded = true;\n } else if (state.status === 'ready') {\n out(` status: ready`);\n out(` path: ${state.searxngPath ?? 'unknown'}`);\n } else {\n out(` status: ${state.status}`);\n if (state.attempts !== undefined) out(` attempts: ${state.attempts} / 3`);\n if (state.lastAttemptAt) out(` lastAttemptAt: ${state.lastAttemptAt}`);\n if (state.nextRetryAt || state.status === 'failed') out(` nextRetryAt: ${humanRetry(state.nextRetryAt)}`);\n if (state.lastError?.command) out(` command: ${state.lastError.command}`);\n if (state.lastError?.exitCode !== undefined) out(` exit code: ${state.lastError.exitCode}`);\n if (state.lastError?.message) out(` message: ${state.lastError.message}`);\n if (state.lastError?.stderr) {\n out(' stderr:');\n for (const line of state.lastError.stderr.split('\\n').slice(0, 20)) out(` ${line}`);\n }\n degraded = true;\n }\n\n out('');\n const lockPath = join(dataDir, 'searxng.lock');\n if (existsSync(lockPath)) {\n try {\n const lock = JSON.parse(readFileSync(lockPath, 'utf-8')) as { pid?: number; port?: number };\n if (lock.pid && isProcessAlive(lock.pid)) {\n out(`[wigolo doctor] Search engine process: running (pid ${lock.pid}, port ${lock.port ?? '?'})`);\n } else {\n out('[wigolo doctor] Search engine process: stale lock (process exited) — will be cleaned on next start');\n }\n } catch {\n out('[wigolo doctor] Search engine process: lock file unparseable — will be cleaned on next start');\n }\n } else {\n out('[wigolo doctor] Search engine process: not running (starts on-demand with MCP server)');\n }\n\n if (state?.status === 'failed') {\n out('');\n out('[wigolo doctor] Recovery:');\n if (state.nextRetryAt) out(` - Wait until next auto-retry (${humanRetry(state.nextRetryAt)}), or`);\n out(` - Force retry now: npx @staticn0va/wigolo warmup --force`);\n }\n\n await checkV1Embeddings();\n await checkSqliteVec(dataDir);\n checkRssFeeds(dataDir);\n checkTelemetryStatus();\n\n out('');\n out(`[wigolo doctor] Overall: ${degraded ? 'DEGRADED' : 'OK'}`);\n return degraded ? 1 : 0;\n}\n\nasync function checkV1Embeddings(): Promise<void> {\n out('');\n out('[wigolo doctor] V1 embeddings:');\n try {\n const provider = await getEmbedProvider();\n out(` provider: ready (fastembed ${provider.modelId}, dim=${provider.dim})`);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n out(` provider: not ready (${msg.slice(0, 80)})`);\n }\n}\n\nasync function checkSqliteVec(dataDir: string): Promise<void> {\n out('');\n out('[wigolo doctor] V1 sqlite-vec:');\n let opened = false;\n try {\n const db = initDatabase(join(dataDir, 'wigolo.db'));\n opened = true;\n try {\n const row = db.prepare('SELECT vec_version() AS v').get() as { v?: string } | undefined;\n const v = row?.v ?? 'unknown';\n out(` extension: loaded (vec_version ${v})`);\n } catch {\n out(' extension: not loaded (run warmup to load on next start)');\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n out(` extension: (check failed: ${msg.slice(0, 80)})`);\n } finally {\n if (opened) {\n try { closeDatabase(); } catch { /* ignore */ }\n }\n }\n}\n\nfunction checkRssFeeds(dataDir: string): void {\n out('');\n out('[wigolo doctor] RSS feeds:');\n try {\n const { feeds } = loadFeedConfig({ dataDir });\n if (feeds.length === 0) {\n out(' feeds: none configured (set WIGOLO_RSS_FEEDS to opt in)');\n return;\n }\n\n let db: ReturnType<typeof initDatabase> | null = null;\n try {\n db = initDatabase(join(dataDir, 'wigolo.db'));\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n out(` feeds: ${feeds.length} configured (db unreadable: ${msg.slice(0, 60)})`);\n return;\n }\n\n let stmt: ReturnType<typeof db.prepare> | null = null;\n try {\n stmt = db.prepare(\n 'SELECT COUNT(*) AS n, MAX(fetched_at) AS last_at FROM feed_items WHERE feed_url = ?',\n );\n } catch {\n // feed_items table missing — treat every feed as never polled.\n }\n\n try {\n const now = Date.now();\n for (const feed of feeds) {\n let line: string;\n if (!stmt) {\n line = ` ${feed.url} 0 items [never polled]`;\n } else {\n try {\n const row = stmt.get(feed.url) as { n?: number; last_at?: string | null } | undefined;\n const n = row?.n ?? 0;\n const lastAt = row?.last_at ?? null;\n if (!lastAt) {\n line = ` ${feed.url} ${n} items [never polled]`;\n } else {\n const ageMs = now - new Date(lastAt).getTime();\n const ageHr = ageMs / 3_600_000;\n const fresh = ageHr <= 24 ? 'fresh' : 'stale';\n const ageLabel = ageHr < 1\n ? `${Math.max(0, Math.round(ageMs / 60_000))}m ago`\n : `${Math.round(ageHr)}h ago`;\n const day = lastAt.slice(0, 10);\n line = ` ${feed.url} ${n} items, last fetched ${day} (${ageLabel}) [${fresh}]`;\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n line = ` ${feed.url} (check failed: ${msg.slice(0, 60)})`;\n }\n }\n out(line);\n }\n } finally {\n try { closeDatabase(); } catch { /* ignore */ }\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n out(` (check failed: ${msg.slice(0, 80)})`);\n }\n}\n\nfunction checkTelemetryStatus(): void {\n out('');\n const state = isTelemetryEnabled() ? 'enabled' : 'disabled';\n out(`[wigolo doctor] Telemetry: opt-in ${state} (WIGOLO_TELEMETRY=1 to opt in)`);\n}\n"],"mappings":"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","names":[]}
@@ -1,2 +1,2 @@
1
- export declare function runHealthCheck(): void;
1
+ export declare function runHealthCheck(): Promise<number>;
2
2
  //# sourceMappingURL=health.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,IAAI,IAAI,CAGrC"}
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"AAMA,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAyCtD"}
@@ -1,5 +1,44 @@
1
- export function runHealthCheck() {
2
- process.stderr.write('[wigolo] Health check: Coming in v2\n');
3
- process.stderr.write('[wigolo] Daemon mode is required for health checks.\n');
1
+ import { getConfig } from "../config.js";
2
+ function log(msg) {
3
+ process.stderr.write(`[wigolo health] ${msg}
4
+ `);
4
5
  }
6
+ async function runHealthCheck() {
7
+ const config = getConfig();
8
+ const host = config.daemonHost;
9
+ const port = config.daemonPort;
10
+ const url = `http://${host}:${port}/health`;
11
+ try {
12
+ const response = await fetch(url, {
13
+ signal: AbortSignal.timeout(5e3)
14
+ });
15
+ if (!response.ok) {
16
+ log(`Daemon returned HTTP ${response.status}`);
17
+ const text = await response.text().catch(() => "");
18
+ if (text) log(text);
19
+ return 1;
20
+ }
21
+ const report = await response.json();
22
+ log(`Status: ${report.status}`);
23
+ log(`Search engine: ${report.searxng}`);
24
+ log(`Browsers: ${report.browsers}`);
25
+ log(`Cache: ${report.cache}`);
26
+ log(`Uptime: ${report.uptime_seconds}s`);
27
+ log("");
28
+ log(JSON.stringify(report, null, 2));
29
+ return report.status === "healthy" ? 0 : 1;
30
+ } catch (err) {
31
+ const message = err instanceof Error ? err.message : String(err);
32
+ if (message.includes("ECONNREFUSED") || message.includes("fetch failed") || message.includes("timed out")) {
33
+ log(`Daemon is not running at ${host}:${port}`);
34
+ log(`Start it with: npx @staticn0va/wigolo serve`);
35
+ } else {
36
+ log(`Health check failed: ${message}`);
37
+ }
38
+ return 1;
39
+ }
40
+ }
41
+ export {
42
+ runHealthCheck
43
+ };
5
44
  //# sourceMappingURL=health.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"sources":["../../src/cli/health.ts"],"sourcesContent":["import { getConfig } from '../config.js';\n\nfunction log(msg: string): void {\n process.stderr.write(`[wigolo health] ${msg}\\n`);\n}\n\nexport async function runHealthCheck(): Promise<number> {\n const config = getConfig();\n const host = config.daemonHost;\n const port = config.daemonPort;\n const url = `http://${host}:${port}/health`;\n\n try {\n const response = await fetch(url, {\n signal: AbortSignal.timeout(5000),\n });\n\n if (!response.ok) {\n log(`Daemon returned HTTP ${response.status}`);\n const text = await response.text().catch(() => '');\n if (text) log(text);\n return 1;\n }\n\n const report = await response.json();\n\n log(`Status: ${report.status}`);\n log(`Search engine: ${report.searxng}`);\n log(`Browsers: ${report.browsers}`);\n log(`Cache: ${report.cache}`);\n log(`Uptime: ${report.uptime_seconds}s`);\n log('');\n log(JSON.stringify(report, null, 2));\n\n return report.status === 'healthy' ? 0 : 1;\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n\n if (message.includes('ECONNREFUSED') || message.includes('fetch failed') || message.includes('timed out')) {\n log(`Daemon is not running at ${host}:${port}`);\n log(`Start it with: npx @staticn0va/wigolo serve`);\n } else {\n log(`Health check failed: ${message}`);\n }\n\n return 1;\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAE1B,SAAS,IAAI,KAAmB;AAC9B,UAAQ,OAAO,MAAM,mBAAmB,GAAG;AAAA,CAAI;AACjD;AAEA,eAAsB,iBAAkC;AACtD,QAAM,SAAS,UAAU;AACzB,QAAM,OAAO,OAAO;AACpB,QAAM,OAAO,OAAO;AACpB,QAAM,MAAM,UAAU,IAAI,IAAI,IAAI;AAElC,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,KAAK;AAAA,MAChC,QAAQ,YAAY,QAAQ,GAAI;AAAA,IAClC,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,UAAI,wBAAwB,SAAS,MAAM,EAAE;AAC7C,YAAM,OAAO,MAAM,SAAS,KAAK,EAAE,MAAM,MAAM,EAAE;AACjD,UAAI,KAAM,KAAI,IAAI;AAClB,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,MAAM,SAAS,KAAK;AAEnC,QAAI,WAAW,OAAO,MAAM,EAAE;AAC9B,QAAI,kBAAkB,OAAO,OAAO,EAAE;AACtC,QAAI,aAAa,OAAO,QAAQ,EAAE;AAClC,QAAI,UAAU,OAAO,KAAK,EAAE;AAC5B,QAAI,WAAW,OAAO,cAAc,GAAG;AACvC,QAAI,EAAE;AACN,QAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAEnC,WAAO,OAAO,WAAW,YAAY,IAAI;AAAA,EAC3C,SAAS,KAAK;AACZ,UAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAE/D,QAAI,QAAQ,SAAS,cAAc,KAAK,QAAQ,SAAS,cAAc,KAAK,QAAQ,SAAS,WAAW,GAAG;AACzG,UAAI,4BAA4B,IAAI,IAAI,IAAI,EAAE;AAC9C,UAAI,6CAA6C;AAAA,IACnD,OAAO;AACL,UAAI,wBAAwB,OAAO,EAAE;AAAA,IACvC;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,6 @@
1
+ export declare function getVersion(): string;
2
+ export declare const HELP_TEXT = "wigolo \u2014 local-first web intelligence MCP server\n\nUsage:\n wigolo Start MCP server on stdio (default)\n wigolo <command> Run a subcommand\n\nSubcommands:\n warmup Pre-fetch models + run setup checks\n serve Start HTTP daemon\n health Health check (exit code = status)\n doctor Diagnose installation\n auth Manage site auth\n plugin Manage plugins\n shell Interactive REPL\n init Initialize project config\n uninstall Remove wigolo install\n setup mcp Wire wigolo into MCP clients\n status Show running daemon status\n backfill Backfill embeddings for cached pages without them\n\nOptions:\n -h, --help Print this help\n -V, --version Print version\n\nDocs: https://github.com/KnockOutEZ/wigolo\n";
3
+ export declare function printHelp(stream?: NodeJS.WriteStream): void;
4
+ export declare function printVersion(stream?: NodeJS.WriteStream): void;
5
+ export declare function printUnknownCommand(name: string, stream?: NodeJS.WriteStream): void;
6
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAUA,wBAAgB,UAAU,IAAI,MAAM,CAQnC;AAED,eAAO,MAAM,SAAS,48BAyBrB,CAAC;AAEF,wBAAgB,SAAS,CAAC,MAAM,GAAE,MAAM,CAAC,WAA4B,GAAG,IAAI,CAE3E;AAED,wBAAgB,YAAY,CAAC,MAAM,GAAE,MAAM,CAAC,WAA4B,GAAG,IAAI,CAE9E;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAM,CAAC,WAA4B,GAC1C,IAAI,CAGN"}
@@ -0,0 +1,63 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ function packageRoot() {
5
+ const here = dirname(fileURLToPath(import.meta.url));
6
+ return join(here, "..", "..");
7
+ }
8
+ function getVersion() {
9
+ try {
10
+ const raw = readFileSync(join(packageRoot(), "package.json"), "utf-8");
11
+ const pkg = JSON.parse(raw);
12
+ return pkg.version ?? "0.0.0";
13
+ } catch {
14
+ return "0.0.0";
15
+ }
16
+ }
17
+ const HELP_TEXT = `wigolo \u2014 local-first web intelligence MCP server
18
+
19
+ Usage:
20
+ wigolo Start MCP server on stdio (default)
21
+ wigolo <command> Run a subcommand
22
+
23
+ Subcommands:
24
+ warmup Pre-fetch models + run setup checks
25
+ serve Start HTTP daemon
26
+ health Health check (exit code = status)
27
+ doctor Diagnose installation
28
+ auth Manage site auth
29
+ plugin Manage plugins
30
+ shell Interactive REPL
31
+ init Initialize project config
32
+ uninstall Remove wigolo install
33
+ setup mcp Wire wigolo into MCP clients
34
+ status Show running daemon status
35
+ backfill Backfill embeddings for cached pages without them
36
+
37
+ Options:
38
+ -h, --help Print this help
39
+ -V, --version Print version
40
+
41
+ Docs: https://github.com/KnockOutEZ/wigolo
42
+ `;
43
+ function printHelp(stream = process.stdout) {
44
+ stream.write(HELP_TEXT);
45
+ }
46
+ function printVersion(stream = process.stdout) {
47
+ stream.write(`wigolo ${getVersion()}
48
+ `);
49
+ }
50
+ function printUnknownCommand(name, stream = process.stderr) {
51
+ stream.write(`wigolo: unknown command '${name}'
52
+
53
+ `);
54
+ stream.write(HELP_TEXT);
55
+ }
56
+ export {
57
+ HELP_TEXT,
58
+ getVersion,
59
+ printHelp,
60
+ printUnknownCommand,
61
+ printVersion
62
+ };
63
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli/help.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nfunction packageRoot(): string {\n const here = dirname(fileURLToPath(import.meta.url));\n // dist/cli/help.js OR src/cli/help.ts → ../.. = package root\n return join(here, '..', '..');\n}\n\nexport function getVersion(): string {\n try {\n const raw = readFileSync(join(packageRoot(), 'package.json'), 'utf-8');\n const pkg = JSON.parse(raw) as { version?: string };\n return pkg.version ?? '0.0.0';\n } catch {\n return '0.0.0';\n }\n}\n\nexport const HELP_TEXT = `wigolo — local-first web intelligence MCP server\n\nUsage:\n wigolo Start MCP server on stdio (default)\n wigolo <command> Run a subcommand\n\nSubcommands:\n warmup Pre-fetch models + run setup checks\n serve Start HTTP daemon\n health Health check (exit code = status)\n doctor Diagnose installation\n auth Manage site auth\n plugin Manage plugins\n shell Interactive REPL\n init Initialize project config\n uninstall Remove wigolo install\n setup mcp Wire wigolo into MCP clients\n status Show running daemon status\n backfill Backfill embeddings for cached pages without them\n\nOptions:\n -h, --help Print this help\n -V, --version Print version\n\nDocs: https://github.com/KnockOutEZ/wigolo\n`;\n\nexport function printHelp(stream: NodeJS.WriteStream = process.stdout): void {\n stream.write(HELP_TEXT);\n}\n\nexport function printVersion(stream: NodeJS.WriteStream = process.stdout): void {\n stream.write(`wigolo ${getVersion()}\\n`);\n}\n\nexport function printUnknownCommand(\n name: string,\n stream: NodeJS.WriteStream = process.stderr,\n): void {\n stream.write(`wigolo: unknown command '${name}'\\n\\n`);\n stream.write(HELP_TEXT);\n}\n"],"mappings":"AAAA,SAAS,oBAAoB;AAC7B,SAAS,SAAS,YAAY;AAC9B,SAAS,qBAAqB;AAE9B,SAAS,cAAsB;AAC7B,QAAM,OAAO,QAAQ,cAAc,YAAY,GAAG,CAAC;AAEnD,SAAO,KAAK,MAAM,MAAM,IAAI;AAC9B;AAEO,SAAS,aAAqB;AACnC,MAAI;AACF,UAAM,MAAM,aAAa,KAAK,YAAY,GAAG,cAAc,GAAG,OAAO;AACrE,UAAM,MAAM,KAAK,MAAM,GAAG;AAC1B,WAAO,IAAI,WAAW;AAAA,EACxB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BlB,SAAS,UAAU,SAA6B,QAAQ,QAAc;AAC3E,SAAO,MAAM,SAAS;AACxB;AAEO,SAAS,aAAa,SAA6B,QAAQ,QAAc;AAC9E,SAAO,MAAM,UAAU,WAAW,CAAC;AAAA,CAAI;AACzC;AAEO,SAAS,oBACd,MACA,SAA6B,QAAQ,QAC/B;AACN,SAAO,MAAM,4BAA4B,IAAI;AAAA;AAAA,CAAO;AACpD,SAAO,MAAM,SAAS;AACxB;","names":[]}
@@ -1,4 +1,4 @@
1
- export type Command = 'mcp' | 'warmup' | 'serve' | 'health';
1
+ export type Command = 'mcp' | 'warmup' | 'serve' | 'health' | 'doctor' | 'auth' | 'plugin' | 'shell' | 'init' | 'uninstall' | 'setup' | 'status' | 'backfill' | 'help' | 'version' | 'unknown';
2
2
  export interface ParsedCommand {
3
3
  command: Command;
4
4
  args: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAID,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAQ1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,OAAO,GACP,MAAM,GACN,WAAW,GACX,OAAO,GACP,QAAQ,GACR,UAAU,GACV,MAAM,GACN,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAqBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAoB1D"}
package/dist/cli/index.js CHANGED
@@ -1,9 +1,37 @@
1
- const KNOWN_COMMANDS = new Set(['warmup', 'serve', 'health']);
2
- export function parseCommand(argv) {
3
- const first = argv[0];
4
- if (first && KNOWN_COMMANDS.has(first)) {
5
- return { command: first, args: argv.slice(1) };
6
- }
7
- return { command: 'mcp', args: [] };
1
+ const KNOWN_COMMANDS = /* @__PURE__ */ new Set([
2
+ "mcp",
3
+ "warmup",
4
+ "serve",
5
+ "health",
6
+ "doctor",
7
+ "auth",
8
+ "plugin",
9
+ "shell",
10
+ "init",
11
+ "uninstall",
12
+ "setup",
13
+ "status",
14
+ "backfill"
15
+ ]);
16
+ const HELP_ALIASES = /* @__PURE__ */ new Set(["--help", "-h", "help"]);
17
+ const VERSION_ALIASES = /* @__PURE__ */ new Set(["--version", "-V", "version"]);
18
+ function parseCommand(argv) {
19
+ const first = argv[0];
20
+ if (!first) {
21
+ return { command: "mcp", args: [] };
22
+ }
23
+ if (HELP_ALIASES.has(first)) {
24
+ return { command: "help", args: [] };
25
+ }
26
+ if (VERSION_ALIASES.has(first)) {
27
+ return { command: "version", args: [] };
28
+ }
29
+ if (KNOWN_COMMANDS.has(first)) {
30
+ return { command: first, args: argv.slice(1) };
31
+ }
32
+ return { command: "unknown", args: [first] };
8
33
  }
34
+ export {
35
+ parseCommand
36
+ };
9
37
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAOA,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEnF,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEtB,IAAI,KAAK,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,KAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtC,CAAC"}
1
+ {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["export type Command =\n | 'mcp'\n | 'warmup'\n | 'serve'\n | 'health'\n | 'doctor'\n | 'auth'\n | 'plugin'\n | 'shell'\n | 'init'\n | 'uninstall'\n | 'setup'\n | 'status'\n | 'backfill'\n | 'help'\n | 'version'\n | 'unknown';\n\nexport interface ParsedCommand {\n command: Command;\n args: string[];\n}\n\nconst KNOWN_COMMANDS: ReadonlySet<string> = new Set([\n 'mcp',\n 'warmup',\n 'serve',\n 'health',\n 'doctor',\n 'auth',\n 'plugin',\n 'shell',\n 'init',\n 'uninstall',\n 'setup',\n 'status',\n 'backfill',\n]);\n\nconst HELP_ALIASES: ReadonlySet<string> = new Set(['--help', '-h', 'help']);\nconst VERSION_ALIASES: ReadonlySet<string> = new Set(['--version', '-V', 'version']);\n\nexport function parseCommand(argv: string[]): ParsedCommand {\n const first = argv[0];\n\n if (!first) {\n return { command: 'mcp', args: [] };\n }\n\n if (HELP_ALIASES.has(first)) {\n return { command: 'help', args: [] };\n }\n\n if (VERSION_ALIASES.has(first)) {\n return { command: 'version', args: [] };\n }\n\n if (KNOWN_COMMANDS.has(first)) {\n return { command: first as Command, args: argv.slice(1) };\n }\n\n return { command: 'unknown', args: [first] };\n}\n"],"mappings":"AAuBA,MAAM,iBAAsC,oBAAI,IAAI;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,MAAM,eAAoC,oBAAI,IAAI,CAAC,UAAU,MAAM,MAAM,CAAC;AAC1E,MAAM,kBAAuC,oBAAI,IAAI,CAAC,aAAa,MAAM,SAAS,CAAC;AAE5E,SAAS,aAAa,MAA+B;AAC1D,QAAM,QAAQ,KAAK,CAAC;AAEpB,MAAI,CAAC,OAAO;AACV,WAAO,EAAE,SAAS,OAAO,MAAM,CAAC,EAAE;AAAA,EACpC;AAEA,MAAI,aAAa,IAAI,KAAK,GAAG;AAC3B,WAAO,EAAE,SAAS,QAAQ,MAAM,CAAC,EAAE;AAAA,EACrC;AAEA,MAAI,gBAAgB,IAAI,KAAK,GAAG;AAC9B,WAAO,EAAE,SAAS,WAAW,MAAM,CAAC,EAAE;AAAA,EACxC;AAEA,MAAI,eAAe,IAAI,KAAK,GAAG;AAC7B,WAAO,EAAE,SAAS,OAAkB,MAAM,KAAK,MAAM,CAAC,EAAE;AAAA,EAC1D;AAEA,SAAO,EAAE,SAAS,WAAW,MAAM,CAAC,KAAK,EAAE;AAC7C;","names":[]}
@@ -0,0 +1,2 @@
1
+ export declare function runInit(args: string[]): Promise<number>;
2
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAcA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuC7D"}