webpeel 0.19.4 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/README.md +2 -2
  2. package/dist/cache.d.ts +0 -1
  3. package/dist/cache.js +0 -1
  4. package/dist/cli/commands/auth.d.ts +5 -0
  5. package/dist/cli/commands/auth.js +476 -0
  6. package/dist/cli/commands/fetch.d.ts +6 -0
  7. package/dist/cli/commands/fetch.js +1015 -0
  8. package/dist/cli/commands/interact.d.ts +5 -0
  9. package/dist/cli/commands/interact.js +839 -0
  10. package/dist/cli/commands/jobs.d.ts +5 -0
  11. package/dist/cli/commands/jobs.js +997 -0
  12. package/dist/cli/commands/screenshot.d.ts +5 -0
  13. package/dist/cli/commands/screenshot.js +273 -0
  14. package/dist/cli/commands/search.d.ts +5 -0
  15. package/dist/cli/commands/search.js +524 -0
  16. package/dist/cli/utils.d.ts +84 -0
  17. package/dist/cli/utils.js +686 -0
  18. package/dist/cli-auth.d.ts +0 -1
  19. package/dist/cli-auth.js +0 -1
  20. package/dist/cli.d.ts +7 -6
  21. package/dist/cli.js +35 -4698
  22. package/dist/core/actions.d.ts +0 -1
  23. package/dist/core/actions.js +0 -1
  24. package/dist/core/agent.d.ts +0 -1
  25. package/dist/core/agent.js +9 -12
  26. package/dist/core/answer.d.ts +0 -1
  27. package/dist/core/answer.js +0 -1
  28. package/dist/core/application-tracker.d.ts +0 -1
  29. package/dist/core/application-tracker.js +0 -1
  30. package/dist/core/apply.d.ts +0 -1
  31. package/dist/core/apply.js +0 -1
  32. package/dist/core/auto-extract.d.ts +0 -1
  33. package/dist/core/auto-extract.js +0 -1
  34. package/dist/core/auto-interact.d.ts +0 -1
  35. package/dist/core/auto-interact.js +0 -1
  36. package/dist/core/bm25-filter.d.ts +0 -1
  37. package/dist/core/bm25-filter.js +0 -1
  38. package/dist/core/branding.d.ts +0 -1
  39. package/dist/core/branding.js +0 -1
  40. package/dist/core/browser-fetch.d.ts +0 -1
  41. package/dist/core/browser-fetch.js +17 -10
  42. package/dist/core/browser-pool.d.ts +0 -1
  43. package/dist/core/browser-pool.js +0 -1
  44. package/dist/core/budget.d.ts +0 -1
  45. package/dist/core/budget.js +0 -1
  46. package/dist/core/cache.d.ts +0 -1
  47. package/dist/core/cache.js +0 -1
  48. package/dist/core/cf-worker-proxy.d.ts +0 -1
  49. package/dist/core/cf-worker-proxy.js +0 -1
  50. package/dist/core/challenge-detection.d.ts +0 -1
  51. package/dist/core/challenge-detection.js +0 -1
  52. package/dist/core/change-tracking.d.ts +0 -1
  53. package/dist/core/change-tracking.js +0 -1
  54. package/dist/core/chunker.d.ts +0 -1
  55. package/dist/core/chunker.js +0 -1
  56. package/dist/core/chunking.d.ts +0 -1
  57. package/dist/core/chunking.js +0 -1
  58. package/dist/core/cloak-fetch.d.ts +0 -1
  59. package/dist/core/cloak-fetch.js +0 -1
  60. package/dist/core/content-pruner.d.ts +0 -1
  61. package/dist/core/content-pruner.js +0 -1
  62. package/dist/core/crawl-checkpoint.d.ts +0 -1
  63. package/dist/core/crawl-checkpoint.js +0 -1
  64. package/dist/core/crawler.d.ts +0 -1
  65. package/dist/core/crawler.js +6 -5
  66. package/dist/core/cycle-fetch.d.ts +0 -1
  67. package/dist/core/cycle-fetch.js +0 -1
  68. package/dist/core/deep-fetch.d.ts +0 -1
  69. package/dist/core/deep-fetch.js +0 -1
  70. package/dist/core/design-analysis.d.ts +0 -1
  71. package/dist/core/design-analysis.js +0 -1
  72. package/dist/core/design-compare.d.ts +0 -1
  73. package/dist/core/design-compare.js +0 -1
  74. package/dist/core/diff.d.ts +0 -1
  75. package/dist/core/diff.js +0 -1
  76. package/dist/core/dns-cache.d.ts +0 -1
  77. package/dist/core/dns-cache.js +0 -1
  78. package/dist/core/documents.d.ts +0 -1
  79. package/dist/core/documents.js +0 -1
  80. package/dist/core/domain-extractors.d.ts +0 -1
  81. package/dist/core/domain-extractors.js +0 -1
  82. package/dist/core/extract-inline.d.ts +0 -1
  83. package/dist/core/extract-inline.js +0 -1
  84. package/dist/core/extract-listings.d.ts +0 -1
  85. package/dist/core/extract-listings.js +0 -1
  86. package/dist/core/extract.d.ts +0 -1
  87. package/dist/core/extract.js +0 -1
  88. package/dist/core/fetcher.d.ts +0 -1
  89. package/dist/core/fetcher.js +0 -1
  90. package/dist/core/google-cache.d.ts +0 -1
  91. package/dist/core/google-cache.js +0 -1
  92. package/dist/core/hotel-search.d.ts +0 -1
  93. package/dist/core/hotel-search.js +0 -1
  94. package/dist/core/http-fetch.d.ts +0 -1
  95. package/dist/core/http-fetch.js +5 -7
  96. package/dist/core/human.d.ts +0 -1
  97. package/dist/core/human.js +0 -1
  98. package/dist/core/jobs.d.ts +0 -1
  99. package/dist/core/jobs.js +0 -1
  100. package/dist/core/json-ld.d.ts +0 -1
  101. package/dist/core/json-ld.js +0 -1
  102. package/dist/core/llm-extract.d.ts +0 -1
  103. package/dist/core/llm-extract.js +0 -1
  104. package/dist/core/logger.d.ts +17 -0
  105. package/dist/core/logger.js +44 -0
  106. package/dist/core/map.d.ts +0 -1
  107. package/dist/core/map.js +0 -1
  108. package/dist/core/markdown.d.ts +0 -1
  109. package/dist/core/markdown.js +0 -1
  110. package/dist/core/metadata.d.ts +0 -1
  111. package/dist/core/metadata.js +0 -1
  112. package/dist/core/paginate.d.ts +0 -1
  113. package/dist/core/paginate.js +0 -1
  114. package/dist/core/pdf.d.ts +0 -1
  115. package/dist/core/pdf.js +0 -1
  116. package/dist/core/peel-tls.d.ts +0 -1
  117. package/dist/core/peel-tls.js +0 -1
  118. package/dist/core/pipeline.d.ts +0 -1
  119. package/dist/core/pipeline.js +22 -25
  120. package/dist/core/profiles.d.ts +0 -1
  121. package/dist/core/profiles.js +0 -1
  122. package/dist/core/quick-answer.d.ts +0 -1
  123. package/dist/core/quick-answer.js +0 -1
  124. package/dist/core/rate-governor.d.ts +0 -1
  125. package/dist/core/rate-governor.js +0 -1
  126. package/dist/core/readability.d.ts +0 -1
  127. package/dist/core/readability.js +0 -1
  128. package/dist/core/research.d.ts +0 -1
  129. package/dist/core/research.js +0 -1
  130. package/dist/core/schema-extraction.d.ts +0 -1
  131. package/dist/core/schema-extraction.js +0 -1
  132. package/dist/core/schema-postprocess.d.ts +0 -1
  133. package/dist/core/schema-postprocess.js +0 -1
  134. package/dist/core/schema-templates.d.ts +0 -1
  135. package/dist/core/schema-templates.js +0 -1
  136. package/dist/core/screenshot.d.ts +0 -1
  137. package/dist/core/screenshot.js +0 -1
  138. package/dist/core/search-fallback.d.ts +0 -1
  139. package/dist/core/search-fallback.js +0 -1
  140. package/dist/core/search-provider.d.ts +0 -1
  141. package/dist/core/search-provider.js +18 -21
  142. package/dist/core/site-search.d.ts +0 -1
  143. package/dist/core/site-search.js +0 -1
  144. package/dist/core/sitemap.d.ts +0 -1
  145. package/dist/core/sitemap.js +0 -1
  146. package/dist/core/stealth-patches.d.ts +0 -1
  147. package/dist/core/stealth-patches.js +0 -1
  148. package/dist/core/stemmer.d.ts +0 -1
  149. package/dist/core/stemmer.js +0 -1
  150. package/dist/core/strategies.d.ts +6 -1
  151. package/dist/core/strategies.js +29 -41
  152. package/dist/core/strategy-hooks.d.ts +0 -1
  153. package/dist/core/strategy-hooks.js +0 -1
  154. package/dist/core/summarize.d.ts +0 -1
  155. package/dist/core/summarize.js +0 -1
  156. package/dist/core/synonyms.d.ts +0 -1
  157. package/dist/core/synonyms.js +0 -1
  158. package/dist/core/table-format.d.ts +0 -1
  159. package/dist/core/table-format.js +0 -1
  160. package/dist/core/timing.d.ts +0 -1
  161. package/dist/core/timing.js +0 -1
  162. package/dist/core/user-agents.d.ts +0 -1
  163. package/dist/core/user-agents.js +0 -1
  164. package/dist/core/watch-manager.d.ts +0 -1
  165. package/dist/core/watch-manager.js +0 -1
  166. package/dist/core/watch.d.ts +0 -1
  167. package/dist/core/watch.js +0 -1
  168. package/dist/core/youtube.d.ts +0 -1
  169. package/dist/core/youtube.js +0 -1
  170. package/dist/index.d.ts +8 -3
  171. package/dist/index.js +27 -3
  172. package/dist/integrations/index.d.ts +0 -1
  173. package/dist/integrations/index.js +0 -1
  174. package/dist/integrations/langchain.d.ts +0 -1
  175. package/dist/integrations/langchain.js +0 -1
  176. package/dist/integrations/llamaindex.d.ts +0 -1
  177. package/dist/integrations/llamaindex.js +0 -1
  178. package/dist/mcp/handlers/act.d.ts +5 -0
  179. package/dist/mcp/handlers/act.js +34 -0
  180. package/dist/mcp/handlers/definitions.d.ts +6 -0
  181. package/dist/mcp/handlers/definitions.js +266 -0
  182. package/dist/mcp/handlers/extract.d.ts +6 -0
  183. package/dist/mcp/handlers/extract.js +102 -0
  184. package/dist/mcp/handlers/fetch.d.ts +6 -0
  185. package/dist/mcp/handlers/fetch.js +98 -0
  186. package/dist/mcp/handlers/find.d.ts +5 -0
  187. package/dist/mcp/handlers/find.js +137 -0
  188. package/dist/mcp/handlers/index.d.ts +13 -0
  189. package/dist/mcp/handlers/index.js +61 -0
  190. package/dist/mcp/handlers/legacy.d.ts +25 -0
  191. package/dist/mcp/handlers/legacy.js +450 -0
  192. package/dist/mcp/handlers/meta.d.ts +6 -0
  193. package/dist/mcp/handlers/meta.js +31 -0
  194. package/dist/mcp/handlers/monitor.d.ts +5 -0
  195. package/dist/mcp/handlers/monitor.js +41 -0
  196. package/dist/mcp/handlers/read.d.ts +6 -0
  197. package/dist/mcp/handlers/read.js +63 -0
  198. package/dist/mcp/handlers/see.d.ts +5 -0
  199. package/dist/mcp/handlers/see.js +75 -0
  200. package/dist/mcp/handlers/types.d.ts +29 -0
  201. package/dist/mcp/handlers/types.js +28 -0
  202. package/dist/mcp/server.d.ts +3 -4
  203. package/dist/mcp/server.js +35 -1101
  204. package/dist/mcp/smart-router.d.ts +0 -1
  205. package/dist/mcp/smart-router.js +3 -1
  206. package/dist/types.d.ts +6 -1
  207. package/dist/types.js +0 -1
  208. package/package.json +3 -13
  209. package/dist/cache.d.ts.map +0 -1
  210. package/dist/cache.js.map +0 -1
  211. package/dist/cli-auth.d.ts.map +0 -1
  212. package/dist/cli-auth.js.map +0 -1
  213. package/dist/cli.bundle.cjs +0 -159248
  214. package/dist/cli.d.ts.map +0 -1
  215. package/dist/cli.js.map +0 -1
  216. package/dist/core/actions.d.ts.map +0 -1
  217. package/dist/core/actions.js.map +0 -1
  218. package/dist/core/agent.d.ts.map +0 -1
  219. package/dist/core/agent.js.map +0 -1
  220. package/dist/core/answer.d.ts.map +0 -1
  221. package/dist/core/answer.js.map +0 -1
  222. package/dist/core/application-tracker.d.ts.map +0 -1
  223. package/dist/core/application-tracker.js.map +0 -1
  224. package/dist/core/apply.d.ts.map +0 -1
  225. package/dist/core/apply.js.map +0 -1
  226. package/dist/core/auto-extract.d.ts.map +0 -1
  227. package/dist/core/auto-extract.js.map +0 -1
  228. package/dist/core/auto-interact.d.ts.map +0 -1
  229. package/dist/core/auto-interact.js.map +0 -1
  230. package/dist/core/bm25-filter.d.ts.map +0 -1
  231. package/dist/core/bm25-filter.js.map +0 -1
  232. package/dist/core/branding.d.ts.map +0 -1
  233. package/dist/core/branding.js.map +0 -1
  234. package/dist/core/browser-fetch.d.ts.map +0 -1
  235. package/dist/core/browser-fetch.js.map +0 -1
  236. package/dist/core/browser-pool.d.ts.map +0 -1
  237. package/dist/core/browser-pool.js.map +0 -1
  238. package/dist/core/budget.d.ts.map +0 -1
  239. package/dist/core/budget.js.map +0 -1
  240. package/dist/core/cache.d.ts.map +0 -1
  241. package/dist/core/cache.js.map +0 -1
  242. package/dist/core/cf-worker-proxy.d.ts.map +0 -1
  243. package/dist/core/cf-worker-proxy.js.map +0 -1
  244. package/dist/core/challenge-detection.d.ts.map +0 -1
  245. package/dist/core/challenge-detection.js.map +0 -1
  246. package/dist/core/change-tracking.d.ts.map +0 -1
  247. package/dist/core/change-tracking.js.map +0 -1
  248. package/dist/core/chunker.d.ts.map +0 -1
  249. package/dist/core/chunker.js.map +0 -1
  250. package/dist/core/chunking.d.ts.map +0 -1
  251. package/dist/core/chunking.js.map +0 -1
  252. package/dist/core/cloak-fetch.d.ts.map +0 -1
  253. package/dist/core/cloak-fetch.js.map +0 -1
  254. package/dist/core/content-pruner.d.ts.map +0 -1
  255. package/dist/core/content-pruner.js.map +0 -1
  256. package/dist/core/crawl-checkpoint.d.ts.map +0 -1
  257. package/dist/core/crawl-checkpoint.js.map +0 -1
  258. package/dist/core/crawler.d.ts.map +0 -1
  259. package/dist/core/crawler.js.map +0 -1
  260. package/dist/core/cycle-fetch.d.ts.map +0 -1
  261. package/dist/core/cycle-fetch.js.map +0 -1
  262. package/dist/core/deep-fetch.d.ts.map +0 -1
  263. package/dist/core/deep-fetch.js.map +0 -1
  264. package/dist/core/design-analysis.d.ts.map +0 -1
  265. package/dist/core/design-analysis.js.map +0 -1
  266. package/dist/core/design-compare.d.ts.map +0 -1
  267. package/dist/core/design-compare.js.map +0 -1
  268. package/dist/core/diff.d.ts.map +0 -1
  269. package/dist/core/diff.js.map +0 -1
  270. package/dist/core/dns-cache.d.ts.map +0 -1
  271. package/dist/core/dns-cache.js.map +0 -1
  272. package/dist/core/documents.d.ts.map +0 -1
  273. package/dist/core/documents.js.map +0 -1
  274. package/dist/core/domain-extractors.d.ts.map +0 -1
  275. package/dist/core/domain-extractors.js.map +0 -1
  276. package/dist/core/extract-inline.d.ts.map +0 -1
  277. package/dist/core/extract-inline.js.map +0 -1
  278. package/dist/core/extract-listings.d.ts.map +0 -1
  279. package/dist/core/extract-listings.js.map +0 -1
  280. package/dist/core/extract.d.ts.map +0 -1
  281. package/dist/core/extract.js.map +0 -1
  282. package/dist/core/fetcher.d.ts.map +0 -1
  283. package/dist/core/fetcher.js.map +0 -1
  284. package/dist/core/google-cache.d.ts.map +0 -1
  285. package/dist/core/google-cache.js.map +0 -1
  286. package/dist/core/hotel-search.d.ts.map +0 -1
  287. package/dist/core/hotel-search.js.map +0 -1
  288. package/dist/core/http-fetch.d.ts.map +0 -1
  289. package/dist/core/http-fetch.js.map +0 -1
  290. package/dist/core/human.d.ts.map +0 -1
  291. package/dist/core/human.js.map +0 -1
  292. package/dist/core/jobs.d.ts.map +0 -1
  293. package/dist/core/jobs.js.map +0 -1
  294. package/dist/core/json-ld.d.ts.map +0 -1
  295. package/dist/core/json-ld.js.map +0 -1
  296. package/dist/core/llm-extract.d.ts.map +0 -1
  297. package/dist/core/llm-extract.js.map +0 -1
  298. package/dist/core/map.d.ts.map +0 -1
  299. package/dist/core/map.js.map +0 -1
  300. package/dist/core/markdown.d.ts.map +0 -1
  301. package/dist/core/markdown.js.map +0 -1
  302. package/dist/core/metadata.d.ts.map +0 -1
  303. package/dist/core/metadata.js.map +0 -1
  304. package/dist/core/paginate.d.ts.map +0 -1
  305. package/dist/core/paginate.js.map +0 -1
  306. package/dist/core/pdf.d.ts.map +0 -1
  307. package/dist/core/pdf.js.map +0 -1
  308. package/dist/core/peel-tls.d.ts.map +0 -1
  309. package/dist/core/peel-tls.js.map +0 -1
  310. package/dist/core/pipeline.d.ts.map +0 -1
  311. package/dist/core/pipeline.js.map +0 -1
  312. package/dist/core/profiles.d.ts.map +0 -1
  313. package/dist/core/profiles.js.map +0 -1
  314. package/dist/core/quick-answer.d.ts.map +0 -1
  315. package/dist/core/quick-answer.js.map +0 -1
  316. package/dist/core/rate-governor.d.ts.map +0 -1
  317. package/dist/core/rate-governor.js.map +0 -1
  318. package/dist/core/readability.d.ts.map +0 -1
  319. package/dist/core/readability.js.map +0 -1
  320. package/dist/core/research.d.ts.map +0 -1
  321. package/dist/core/research.js.map +0 -1
  322. package/dist/core/schema-extraction.d.ts.map +0 -1
  323. package/dist/core/schema-extraction.js.map +0 -1
  324. package/dist/core/schema-postprocess.d.ts.map +0 -1
  325. package/dist/core/schema-postprocess.js.map +0 -1
  326. package/dist/core/schema-templates.d.ts.map +0 -1
  327. package/dist/core/schema-templates.js.map +0 -1
  328. package/dist/core/screenshot.d.ts.map +0 -1
  329. package/dist/core/screenshot.js.map +0 -1
  330. package/dist/core/search-fallback.d.ts.map +0 -1
  331. package/dist/core/search-fallback.js.map +0 -1
  332. package/dist/core/search-provider.d.ts.map +0 -1
  333. package/dist/core/search-provider.js.map +0 -1
  334. package/dist/core/site-search.d.ts.map +0 -1
  335. package/dist/core/site-search.js.map +0 -1
  336. package/dist/core/sitemap.d.ts.map +0 -1
  337. package/dist/core/sitemap.js.map +0 -1
  338. package/dist/core/stealth-patches.d.ts.map +0 -1
  339. package/dist/core/stealth-patches.js.map +0 -1
  340. package/dist/core/stemmer.d.ts.map +0 -1
  341. package/dist/core/stemmer.js.map +0 -1
  342. package/dist/core/strategies.d.ts.map +0 -1
  343. package/dist/core/strategies.js.map +0 -1
  344. package/dist/core/strategy-hooks.d.ts.map +0 -1
  345. package/dist/core/strategy-hooks.js.map +0 -1
  346. package/dist/core/summarize.d.ts.map +0 -1
  347. package/dist/core/summarize.js.map +0 -1
  348. package/dist/core/synonyms.d.ts.map +0 -1
  349. package/dist/core/synonyms.js.map +0 -1
  350. package/dist/core/table-format.d.ts.map +0 -1
  351. package/dist/core/table-format.js.map +0 -1
  352. package/dist/core/timing.d.ts.map +0 -1
  353. package/dist/core/timing.js.map +0 -1
  354. package/dist/core/user-agents.d.ts.map +0 -1
  355. package/dist/core/user-agents.js.map +0 -1
  356. package/dist/core/watch-manager.d.ts.map +0 -1
  357. package/dist/core/watch-manager.js.map +0 -1
  358. package/dist/core/watch.d.ts.map +0 -1
  359. package/dist/core/watch.js.map +0 -1
  360. package/dist/core/youtube.d.ts.map +0 -1
  361. package/dist/core/youtube.js.map +0 -1
  362. package/dist/index.d.ts.map +0 -1
  363. package/dist/index.js.map +0 -1
  364. package/dist/integrations/index.d.ts.map +0 -1
  365. package/dist/integrations/index.js.map +0 -1
  366. package/dist/integrations/langchain.d.ts.map +0 -1
  367. package/dist/integrations/langchain.js.map +0 -1
  368. package/dist/integrations/llamaindex.d.ts.map +0 -1
  369. package/dist/integrations/llamaindex.js.map +0 -1
  370. package/dist/mcp/server.d.ts.map +0 -1
  371. package/dist/mcp/server.js.map +0 -1
  372. package/dist/mcp/smart-router.d.ts.map +0 -1
  373. package/dist/mcp/smart-router.js.map +0 -1
  374. package/dist/server/app.d.ts +0 -15
  375. package/dist/server/app.d.ts.map +0 -1
  376. package/dist/server/app.js +0 -350
  377. package/dist/server/app.js.map +0 -1
  378. package/dist/server/auth-store.d.ts +0 -28
  379. package/dist/server/auth-store.d.ts.map +0 -1
  380. package/dist/server/auth-store.js +0 -89
  381. package/dist/server/auth-store.js.map +0 -1
  382. package/dist/server/email-service.d.ts +0 -22
  383. package/dist/server/email-service.d.ts.map +0 -1
  384. package/dist/server/email-service.js +0 -80
  385. package/dist/server/email-service.js.map +0 -1
  386. package/dist/server/job-queue.d.ts +0 -93
  387. package/dist/server/job-queue.d.ts.map +0 -1
  388. package/dist/server/job-queue.js +0 -146
  389. package/dist/server/job-queue.js.map +0 -1
  390. package/dist/server/logger.d.ts +0 -11
  391. package/dist/server/logger.d.ts.map +0 -1
  392. package/dist/server/logger.js +0 -38
  393. package/dist/server/logger.js.map +0 -1
  394. package/dist/server/middleware/auth.d.ts +0 -29
  395. package/dist/server/middleware/auth.d.ts.map +0 -1
  396. package/dist/server/middleware/auth.js +0 -222
  397. package/dist/server/middleware/auth.js.map +0 -1
  398. package/dist/server/middleware/rate-limit.d.ts +0 -25
  399. package/dist/server/middleware/rate-limit.d.ts.map +0 -1
  400. package/dist/server/middleware/rate-limit.js +0 -168
  401. package/dist/server/middleware/rate-limit.js.map +0 -1
  402. package/dist/server/middleware/url-validator.d.ts +0 -16
  403. package/dist/server/middleware/url-validator.d.ts.map +0 -1
  404. package/dist/server/middleware/url-validator.js +0 -187
  405. package/dist/server/middleware/url-validator.js.map +0 -1
  406. package/dist/server/openapi.yaml +0 -4944
  407. package/dist/server/pg-auth-store.d.ts +0 -133
  408. package/dist/server/pg-auth-store.d.ts.map +0 -1
  409. package/dist/server/pg-auth-store.js +0 -473
  410. package/dist/server/pg-auth-store.js.map +0 -1
  411. package/dist/server/pg-job-queue.d.ts +0 -60
  412. package/dist/server/pg-job-queue.d.ts.map +0 -1
  413. package/dist/server/pg-job-queue.js +0 -365
  414. package/dist/server/pg-job-queue.js.map +0 -1
  415. package/dist/server/premium/domain-intel.d.ts +0 -17
  416. package/dist/server/premium/domain-intel.d.ts.map +0 -1
  417. package/dist/server/premium/domain-intel.js +0 -134
  418. package/dist/server/premium/domain-intel.js.map +0 -1
  419. package/dist/server/premium/index.d.ts +0 -18
  420. package/dist/server/premium/index.d.ts.map +0 -1
  421. package/dist/server/premium/index.js +0 -36
  422. package/dist/server/premium/index.js.map +0 -1
  423. package/dist/server/premium/swr-cache.d.ts +0 -15
  424. package/dist/server/premium/swr-cache.d.ts.map +0 -1
  425. package/dist/server/premium/swr-cache.js +0 -35
  426. package/dist/server/premium/swr-cache.js.map +0 -1
  427. package/dist/server/routes/activity.d.ts +0 -7
  428. package/dist/server/routes/activity.d.ts.map +0 -1
  429. package/dist/server/routes/activity.js +0 -68
  430. package/dist/server/routes/activity.js.map +0 -1
  431. package/dist/server/routes/agent.d.ts +0 -16
  432. package/dist/server/routes/agent.d.ts.map +0 -1
  433. package/dist/server/routes/agent.js +0 -247
  434. package/dist/server/routes/agent.js.map +0 -1
  435. package/dist/server/routes/answer.d.ts +0 -6
  436. package/dist/server/routes/answer.d.ts.map +0 -1
  437. package/dist/server/routes/answer.js +0 -133
  438. package/dist/server/routes/answer.js.map +0 -1
  439. package/dist/server/routes/ask.d.ts +0 -23
  440. package/dist/server/routes/ask.d.ts.map +0 -1
  441. package/dist/server/routes/ask.js +0 -119
  442. package/dist/server/routes/ask.js.map +0 -1
  443. package/dist/server/routes/batch.d.ts +0 -7
  444. package/dist/server/routes/batch.d.ts.map +0 -1
  445. package/dist/server/routes/batch.js +0 -412
  446. package/dist/server/routes/batch.js.map +0 -1
  447. package/dist/server/routes/cli-usage.d.ts +0 -7
  448. package/dist/server/routes/cli-usage.d.ts.map +0 -1
  449. package/dist/server/routes/cli-usage.js +0 -121
  450. package/dist/server/routes/cli-usage.js.map +0 -1
  451. package/dist/server/routes/compat.d.ts +0 -24
  452. package/dist/server/routes/compat.d.ts.map +0 -1
  453. package/dist/server/routes/compat.js +0 -653
  454. package/dist/server/routes/compat.js.map +0 -1
  455. package/dist/server/routes/deep-fetch.d.ts +0 -9
  456. package/dist/server/routes/deep-fetch.d.ts.map +0 -1
  457. package/dist/server/routes/deep-fetch.js +0 -50
  458. package/dist/server/routes/deep-fetch.js.map +0 -1
  459. package/dist/server/routes/demo.d.ts +0 -25
  460. package/dist/server/routes/demo.d.ts.map +0 -1
  461. package/dist/server/routes/demo.js +0 -434
  462. package/dist/server/routes/demo.js.map +0 -1
  463. package/dist/server/routes/extract.d.ts +0 -9
  464. package/dist/server/routes/extract.d.ts.map +0 -1
  465. package/dist/server/routes/extract.js +0 -150
  466. package/dist/server/routes/extract.js.map +0 -1
  467. package/dist/server/routes/fetch.d.ts +0 -8
  468. package/dist/server/routes/fetch.d.ts.map +0 -1
  469. package/dist/server/routes/fetch.js +0 -988
  470. package/dist/server/routes/fetch.js.map +0 -1
  471. package/dist/server/routes/health.d.ts +0 -8
  472. package/dist/server/routes/health.d.ts.map +0 -1
  473. package/dist/server/routes/health.js +0 -20
  474. package/dist/server/routes/health.js.map +0 -1
  475. package/dist/server/routes/jobs.d.ts +0 -8
  476. package/dist/server/routes/jobs.d.ts.map +0 -1
  477. package/dist/server/routes/jobs.js +0 -487
  478. package/dist/server/routes/jobs.js.map +0 -1
  479. package/dist/server/routes/mcp.d.ts +0 -18
  480. package/dist/server/routes/mcp.d.ts.map +0 -1
  481. package/dist/server/routes/mcp.js +0 -1260
  482. package/dist/server/routes/mcp.js.map +0 -1
  483. package/dist/server/routes/oauth.d.ts +0 -10
  484. package/dist/server/routes/oauth.d.ts.map +0 -1
  485. package/dist/server/routes/oauth.js +0 -334
  486. package/dist/server/routes/oauth.js.map +0 -1
  487. package/dist/server/routes/quick-answer.d.ts +0 -9
  488. package/dist/server/routes/quick-answer.d.ts.map +0 -1
  489. package/dist/server/routes/quick-answer.js +0 -93
  490. package/dist/server/routes/quick-answer.js.map +0 -1
  491. package/dist/server/routes/screenshot.d.ts +0 -23
  492. package/dist/server/routes/screenshot.d.ts.map +0 -1
  493. package/dist/server/routes/screenshot.js +0 -819
  494. package/dist/server/routes/screenshot.js.map +0 -1
  495. package/dist/server/routes/search.d.ts +0 -7
  496. package/dist/server/routes/search.d.ts.map +0 -1
  497. package/dist/server/routes/search.js +0 -312
  498. package/dist/server/routes/search.js.map +0 -1
  499. package/dist/server/routes/session.d.ts +0 -16
  500. package/dist/server/routes/session.d.ts.map +0 -1
  501. package/dist/server/routes/session.js +0 -278
  502. package/dist/server/routes/session.js.map +0 -1
  503. package/dist/server/routes/stats.d.ts +0 -7
  504. package/dist/server/routes/stats.d.ts.map +0 -1
  505. package/dist/server/routes/stats.js +0 -65
  506. package/dist/server/routes/stats.js.map +0 -1
  507. package/dist/server/routes/stripe.d.ts +0 -16
  508. package/dist/server/routes/stripe.d.ts.map +0 -1
  509. package/dist/server/routes/stripe.js +0 -283
  510. package/dist/server/routes/stripe.js.map +0 -1
  511. package/dist/server/routes/users.d.ts +0 -9
  512. package/dist/server/routes/users.d.ts.map +0 -1
  513. package/dist/server/routes/users.js +0 -1211
  514. package/dist/server/routes/users.js.map +0 -1
  515. package/dist/server/routes/watch.d.ts +0 -16
  516. package/dist/server/routes/watch.d.ts.map +0 -1
  517. package/dist/server/routes/watch.js +0 -257
  518. package/dist/server/routes/watch.js.map +0 -1
  519. package/dist/server/routes/webhooks.d.ts +0 -16
  520. package/dist/server/routes/webhooks.d.ts.map +0 -1
  521. package/dist/server/routes/webhooks.js +0 -74
  522. package/dist/server/routes/webhooks.js.map +0 -1
  523. package/dist/server/routes/youtube.d.ts +0 -7
  524. package/dist/server/routes/youtube.d.ts.map +0 -1
  525. package/dist/server/routes/youtube.js +0 -93
  526. package/dist/server/routes/youtube.js.map +0 -1
  527. package/dist/server/sentry.d.ts +0 -14
  528. package/dist/server/sentry.d.ts.map +0 -1
  529. package/dist/server/sentry.js +0 -39
  530. package/dist/server/sentry.js.map +0 -1
  531. package/dist/server/types.d.ts +0 -16
  532. package/dist/server/types.d.ts.map +0 -1
  533. package/dist/server/types.js +0 -8
  534. package/dist/server/types.js.map +0 -1
  535. package/dist/server/utils/response.d.ts +0 -45
  536. package/dist/server/utils/response.d.ts.map +0 -1
  537. package/dist/server/utils/response.js +0 -70
  538. package/dist/server/utils/response.js.map +0 -1
  539. package/dist/server/utils/sse.d.ts +0 -23
  540. package/dist/server/utils/sse.d.ts.map +0 -1
  541. package/dist/server/utils/sse.js +0 -39
  542. package/dist/server/utils/sse.js.map +0 -1
  543. package/dist/types.d.ts.map +0 -1
  544. package/dist/types.js.map +0 -1
@@ -1,93 +0,0 @@
1
- /**
2
- * Job queue for async operations
3
- *
4
- * Factory creates PostgreSQL-backed queue in production or in-memory queue for local dev.
5
- * Tracks crawl, batch scrape, and extraction jobs with progress updates.
6
- */
7
- export interface WebhookConfig {
8
- url: string;
9
- events: ('started' | 'page' | 'completed' | 'failed')[];
10
- metadata?: Record<string, any>;
11
- secret?: string;
12
- }
13
- export interface Job {
14
- id: string;
15
- type: 'crawl' | 'batch' | 'extract';
16
- status: 'queued' | 'processing' | 'completed' | 'failed' | 'cancelled';
17
- progress: number;
18
- total: number;
19
- completed: number;
20
- creditsUsed: number;
21
- data: any[];
22
- error?: string;
23
- webhook?: WebhookConfig;
24
- ownerId?: string;
25
- createdAt: string;
26
- updatedAt: string;
27
- expiresAt: string;
28
- }
29
- /**
30
- * Job queue interface - implemented by both in-memory and PostgreSQL queues
31
- */
32
- export interface IJobQueue {
33
- createJob(type: Job['type'], webhook?: WebhookConfig, ownerId?: string): Job | Promise<Job>;
34
- getJob(id: string): Job | null | Promise<Job | null>;
35
- updateJob(id: string, update: Partial<Job>): void | Promise<void>;
36
- cancelJob(id: string): boolean | Promise<boolean>;
37
- listJobs(options?: {
38
- type?: string;
39
- status?: string;
40
- limit?: number;
41
- ownerId?: string;
42
- }): Job[] | Promise<Job[]>;
43
- destroy(): void;
44
- }
45
- /**
46
- * In-memory job queue for local development
47
- */
48
- export declare class InMemoryJobQueue implements IJobQueue {
49
- private jobs;
50
- private cleanupInterval;
51
- constructor();
52
- /**
53
- * Create a new job
54
- */
55
- createJob(type: Job['type'], webhook?: WebhookConfig, ownerId?: string): Job;
56
- /**
57
- * Get a job by ID
58
- */
59
- getJob(id: string): Job | null;
60
- /**
61
- * Update a job
62
- */
63
- updateJob(id: string, update: Partial<Job>): void;
64
- /**
65
- * Cancel a job
66
- */
67
- cancelJob(id: string): boolean;
68
- /**
69
- * List jobs with optional filters
70
- */
71
- listJobs(options?: {
72
- type?: string;
73
- status?: string;
74
- limit?: number;
75
- ownerId?: string;
76
- }): Job[];
77
- /**
78
- * Remove expired jobs
79
- */
80
- cleanExpired(): void;
81
- /**
82
- * Clean up interval on shutdown
83
- */
84
- destroy(): void;
85
- }
86
- /**
87
- * Create job queue based on environment
88
- * - Uses PostgreSQL if DATABASE_URL is set
89
- * - Falls back to in-memory for local development
90
- */
91
- export declare function createJobQueue(): IJobQueue;
92
- export declare const jobQueue: InMemoryJobQueue;
93
- //# sourceMappingURL=job-queue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"job-queue.d.ts","sourceRoot":"","sources":["../../src/server/job-queue.ts"],"names":[],"mappings":"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"}
@@ -1,146 +0,0 @@
1
- /**
2
- * Job queue for async operations
3
- *
4
- * Factory creates PostgreSQL-backed queue in production or in-memory queue for local dev.
5
- * Tracks crawl, batch scrape, and extraction jobs with progress updates.
6
- */
7
- import { randomUUID } from 'crypto';
8
- import { PostgresJobQueue } from './pg-job-queue.js';
9
- import { createLogger } from './logger.js';
10
- const log = createLogger('job-queue');
11
- /**
12
- * In-memory job queue for local development
13
- */
14
- export class InMemoryJobQueue {
15
- jobs = new Map();
16
- cleanupInterval;
17
- constructor() {
18
- // Clean expired jobs every hour
19
- this.cleanupInterval = setInterval(() => {
20
- this.cleanExpired();
21
- }, 60 * 60 * 1000);
22
- }
23
- /**
24
- * Create a new job
25
- */
26
- createJob(type, webhook, ownerId) {
27
- const now = new Date().toISOString();
28
- const job = {
29
- id: randomUUID(),
30
- type,
31
- status: 'queued',
32
- progress: 0,
33
- total: 0,
34
- completed: 0,
35
- creditsUsed: 0,
36
- data: [],
37
- webhook,
38
- ownerId,
39
- createdAt: now,
40
- updatedAt: now,
41
- expiresAt: new Date(Date.now() + 25 * 60 * 60 * 1000).toISOString(), // 25h from now (updated on completion)
42
- };
43
- this.jobs.set(job.id, job);
44
- return job;
45
- }
46
- /**
47
- * Get a job by ID
48
- */
49
- getJob(id) {
50
- return this.jobs.get(id) || null;
51
- }
52
- /**
53
- * Update a job
54
- */
55
- updateJob(id, update) {
56
- const job = this.jobs.get(id);
57
- if (!job)
58
- return;
59
- Object.assign(job, update, {
60
- updatedAt: new Date().toISOString(),
61
- });
62
- // When job completes/fails, set expiration to 24h from now
63
- if (update.status === 'completed' || update.status === 'failed') {
64
- job.expiresAt = new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString();
65
- }
66
- // Update progress percentage
67
- if (job.total > 0) {
68
- job.progress = Math.round((job.completed / job.total) * 100);
69
- }
70
- this.jobs.set(id, job);
71
- }
72
- /**
73
- * Cancel a job
74
- */
75
- cancelJob(id) {
76
- const job = this.jobs.get(id);
77
- if (!job)
78
- return false;
79
- // Can only cancel queued or processing jobs
80
- if (job.status !== 'queued' && job.status !== 'processing') {
81
- return false;
82
- }
83
- this.updateJob(id, {
84
- status: 'cancelled',
85
- expiresAt: new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(),
86
- });
87
- return true;
88
- }
89
- /**
90
- * List jobs with optional filters
91
- */
92
- listJobs(options) {
93
- let jobs = Array.from(this.jobs.values());
94
- if (options?.ownerId) {
95
- jobs = jobs.filter(j => j.ownerId === options.ownerId);
96
- }
97
- if (options?.type) {
98
- jobs = jobs.filter(j => j.type === options.type);
99
- }
100
- if (options?.status) {
101
- jobs = jobs.filter(j => j.status === options.status);
102
- }
103
- // Sort by creation time (newest first)
104
- jobs.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
105
- if (options?.limit) {
106
- jobs = jobs.slice(0, options.limit);
107
- }
108
- return jobs;
109
- }
110
- /**
111
- * Remove expired jobs
112
- */
113
- cleanExpired() {
114
- const now = Date.now();
115
- for (const [id, job] of this.jobs.entries()) {
116
- if (new Date(job.expiresAt).getTime() < now) {
117
- this.jobs.delete(id);
118
- }
119
- }
120
- }
121
- /**
122
- * Clean up interval on shutdown
123
- */
124
- destroy() {
125
- clearInterval(this.cleanupInterval);
126
- }
127
- }
128
- /**
129
- * Create job queue based on environment
130
- * - Uses PostgreSQL if DATABASE_URL is set
131
- * - Falls back to in-memory for local development
132
- */
133
- export function createJobQueue() {
134
- if (process.env.DATABASE_URL) {
135
- log.info('Using PostgreSQL job queue');
136
- return new PostgresJobQueue();
137
- }
138
- else {
139
- log.info('Using in-memory job queue');
140
- return new InMemoryJobQueue();
141
- }
142
- }
143
- // Legacy global instance for backwards compatibility (deprecated)
144
- // @deprecated Use createJobQueue() instead
145
- export const jobQueue = new InMemoryJobQueue();
146
- //# sourceMappingURL=job-queue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"job-queue.js","sourceRoot":"","sources":["../../src/server/job-queue.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Lightweight structured logger — no external dependencies.
3
- * Respects LOG_LEVEL env var: debug | info | warn | error (default: info)
4
- */
5
- export declare function createLogger(component: string): {
6
- debug(msg: string, data?: Record<string, unknown>): void;
7
- info(msg: string, data?: Record<string, unknown>): void;
8
- warn(msg: string, data?: Record<string, unknown>): void;
9
- error(msg: string, data?: Record<string, unknown>): void;
10
- };
11
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/server/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM;eAE/B,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;cAG9C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;cAG7C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;eAG5C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;EAI3D"}
@@ -1,38 +0,0 @@
1
- /**
2
- * Lightweight structured logger — no external dependencies.
3
- * Respects LOG_LEVEL env var: debug | info | warn | error (default: info)
4
- */
5
- const LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };
6
- const LOG_LEVEL = (process.env.LOG_LEVEL ?? 'info');
7
- function shouldLog(level) {
8
- return LEVELS[level] >= (LEVELS[LOG_LEVEL] ?? LEVELS.info);
9
- }
10
- function formatLog(level, component, message, data) {
11
- const ts = new Date().toISOString();
12
- const base = `${ts} [${level.toUpperCase()}] [${component}] ${message}`;
13
- if (data && Object.keys(data).length > 0) {
14
- return `${base} ${JSON.stringify(data)}`;
15
- }
16
- return base;
17
- }
18
- export function createLogger(component) {
19
- return {
20
- debug(msg, data) {
21
- if (shouldLog('debug'))
22
- console.debug(formatLog('debug', component, msg, data));
23
- },
24
- info(msg, data) {
25
- if (shouldLog('info'))
26
- console.info(formatLog('info', component, msg, data));
27
- },
28
- warn(msg, data) {
29
- if (shouldLog('warn'))
30
- console.warn(formatLog('warn', component, msg, data));
31
- },
32
- error(msg, data) {
33
- if (shouldLog('error'))
34
- console.error(formatLog('error', component, msg, data));
35
- },
36
- };
37
- }
38
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/server/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,GAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAClF,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAa,CAAC;AAEhE,SAAS,SAAS,CAAC,KAAe;IAChC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,SAAS,CAChB,KAAe,EACf,SAAiB,EACjB,OAAe,EACf,IAA8B;IAE9B,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,MAAM,SAAS,KAAK,OAAO,EAAE,CAAC;IACxE,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,OAAO;QACL,KAAK,CAAC,GAAW,EAAE,IAA8B;YAC/C,IAAI,SAAS,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,GAAW,EAAE,IAA8B;YAC9C,IAAI,SAAS,CAAC,MAAM,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,GAAW,EAAE,IAA8B;YAC9C,IAAI,SAAS,CAAC,MAAM,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,KAAK,CAAC,GAAW,EAAE,IAA8B;YAC/C,IAAI,SAAS,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAClF,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,29 +0,0 @@
1
- /**
2
- * API key authentication middleware with SOFT LIMIT enforcement
3
- *
4
- * Philosophy: Never fully block users. When weekly limits are exceeded,
5
- * degrade to HTTP-only mode instead of returning 429.
6
- * BURST limits (hourly) are HARD limits and return 429.
7
- *
8
- * Dual auth: Accepts both API keys AND JWT session tokens.
9
- * API keys are validated via the auth store; JWTs are verified with JWT_SECRET.
10
- * Dashboard pages use JWT tokens; CLI/SDK users use API keys.
11
- */
12
- import { Request, Response, NextFunction } from 'express';
13
- import { AuthStore, ApiKeyInfo } from '../auth-store.js';
14
- import '../types.js';
15
- declare global {
16
- namespace Express {
17
- interface Request {
18
- auth?: {
19
- keyInfo: ApiKeyInfo | null;
20
- tier: 'free' | 'starter' | 'pro' | 'enterprise' | 'max' | 'admin';
21
- rateLimit: number;
22
- softLimited: boolean;
23
- extraUsageAvailable: boolean;
24
- };
25
- }
26
- }
27
- }
28
- export declare function createAuthMiddleware(authStore: AuthStore): (req: Request, res: Response, next: NextFunction) => Promise<void>;
29
- //# sourceMappingURL=auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/server/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,aAAa,CAAC;AAErB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,OAAO,CAAC;QAChB,UAAU,OAAO;YACf,IAAI,CAAC,EAAE;gBACL,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;gBAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,YAAY,GAAG,KAAK,GAAG,OAAO,CAAC;gBAClE,SAAS,EAAE,MAAM,CAAC;gBAClB,WAAW,EAAE,OAAO,CAAC;gBACrB,mBAAmB,EAAE,OAAO,CAAC;aAC9B,CAAC;SACH;KACF;CACF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,IACzC,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAsO9D"}
@@ -1,222 +0,0 @@
1
- /**
2
- * API key authentication middleware with SOFT LIMIT enforcement
3
- *
4
- * Philosophy: Never fully block users. When weekly limits are exceeded,
5
- * degrade to HTTP-only mode instead of returning 429.
6
- * BURST limits (hourly) are HARD limits and return 429.
7
- *
8
- * Dual auth: Accepts both API keys AND JWT session tokens.
9
- * API keys are validated via the auth store; JWTs are verified with JWT_SECRET.
10
- * Dashboard pages use JWT tokens; CLI/SDK users use API keys.
11
- */
12
- import jwt from 'jsonwebtoken';
13
- import { PostgresAuthStore } from '../pg-auth-store.js';
14
- import '../types.js'; // Augments Express.Request with requestId
15
- export function createAuthMiddleware(authStore) {
16
- return async (req, res, next) => {
17
- try {
18
- // Extract API key from Authorization header or X-API-Key header
19
- const authHeader = req.headers.authorization;
20
- const apiKeyHeader = req.headers['x-api-key'];
21
- // SECURITY: Skip API key auth for public/JWT-protected endpoints
22
- // These routes either need no auth or use their own JWT middleware
23
- const isPublicEndpoint = req.path === '/health' ||
24
- req.path.startsWith('/v1/auth/') ||
25
- req.path === '/v1/webhooks/stripe' ||
26
- req.path === '/v1/me' ||
27
- req.path.startsWith('/v1/keys') ||
28
- req.path.startsWith('/v1/extra-usage');
29
- if (isPublicEndpoint) {
30
- req.auth = {
31
- keyInfo: null,
32
- tier: 'free',
33
- rateLimit: 10,
34
- softLimited: false,
35
- extraUsageAvailable: false,
36
- };
37
- return next();
38
- }
39
- // SECURITY: Ensure headers are strings before processing (guards against
40
- // malformed multi-value headers that would cause a null reference crash → 502)
41
- const rawAuth = typeof authHeader === 'string' ? authHeader : undefined;
42
- const rawApiKey = typeof apiKeyHeader === 'string' ? apiKeyHeader : undefined;
43
- let apiKey = null;
44
- if (rawAuth?.startsWith('Bearer ')) {
45
- apiKey = rawAuth.slice(7);
46
- }
47
- else if (rawApiKey) {
48
- apiKey = rawApiKey;
49
- }
50
- if (!apiKey) {
51
- // No credentials supplied — let the request through unauthenticated.
52
- // Public routes (/health, /v1/auth/*) already returned above.
53
- // Protected routes must check req.auth?.keyInfo and return 401 themselves.
54
- req.auth = undefined;
55
- return next();
56
- }
57
- // Validate API key if provided
58
- let keyInfo = null;
59
- let softLimited = false;
60
- let extraUsageAvailable = false;
61
- if (apiKey) {
62
- keyInfo = await authStore.validateKey(apiKey);
63
- if (!keyInfo) {
64
- // Check if key exists but is expired (before falling through to JWT)
65
- if (authStore instanceof PostgresAuthStore) {
66
- const expired = await authStore.isKeyExpired(apiKey);
67
- if (expired) {
68
- res.status(401).json({
69
- success: false,
70
- error: {
71
- type: 'key_expired',
72
- message: 'This API key has expired.',
73
- hint: 'Generate a new key at https://app.webpeel.dev/keys',
74
- docs: 'https://webpeel.dev/docs/errors#unauthorized',
75
- },
76
- metadata: { requestId: req.requestId },
77
- });
78
- return;
79
- }
80
- }
81
- // API key not found — try JWT session token as fallback.
82
- // Dashboard uses JWT tokens (from /v1/auth/login or /v1/auth/oauth),
83
- // while CLI/SDK users use API keys. Support both seamlessly.
84
- const jwtSecret = process.env.JWT_SECRET;
85
- if (jwtSecret) {
86
- try {
87
- const payload = jwt.verify(apiKey, jwtSecret);
88
- if (payload.userId) {
89
- // Valid JWT — treat as authenticated session user.
90
- // Set req.auth with null keyInfo (no API key) and attach
91
- // the JWT payload so routes can use req.user.userId.
92
- req.auth = {
93
- keyInfo: null,
94
- tier: payload.tier || 'free',
95
- rateLimit: 25,
96
- softLimited: false,
97
- extraUsageAvailable: false,
98
- };
99
- req.user = payload;
100
- return next();
101
- }
102
- }
103
- catch (e) {
104
- if (process.env.DEBUG)
105
- console.debug('[webpeel]', 'jwt verify failed:', e instanceof Error ? e.message : e);
106
- }
107
- }
108
- // Firecrawl compat routes expect { error: "string" } not { error: { type, message } }
109
- const isCompatRoute = /^\/(v[12]\/(scrape|crawl|map|search))/.test(req.path);
110
- if (isCompatRoute) {
111
- res.status(401).json({
112
- success: false,
113
- error: 'Invalid or expired API key. Get one at https://app.webpeel.dev/keys',
114
- });
115
- }
116
- else {
117
- res.status(401).json({
118
- success: false,
119
- error: {
120
- type: 'invalid_key',
121
- message: 'Invalid or expired API key.',
122
- hint: 'Check your key at https://app.webpeel.dev/keys or generate a new one.',
123
- docs: 'https://webpeel.dev/docs/errors#unauthorized',
124
- },
125
- metadata: { requestId: req.requestId },
126
- });
127
- }
128
- return;
129
- }
130
- // Check limits (only for PostgresAuthStore)
131
- if (authStore instanceof PostgresAuthStore) {
132
- // HARD LIMIT: Check burst limit first (per-hour cap)
133
- const { allowed: burstAllowed, burst } = await authStore.checkBurstLimit(apiKey);
134
- if (!burstAllowed) {
135
- // Burst limit exceeded - HARD 429 with Retry-After
136
- const retryAfterSeconds = 60 * parseInt(burst.resetsIn.match(/\d+/)?.[0] || '1', 10);
137
- res.setHeader('Retry-After', retryAfterSeconds.toString());
138
- res.setHeader('X-Burst-Limit', burst.limit.toString());
139
- res.setHeader('X-Burst-Used', burst.count.toString());
140
- const tier = keyInfo?.tier || 'free';
141
- const upgradeHint = tier === 'free'
142
- ? ' Upgrade to Pro ($9/mo) for 100/hr → https://webpeel.dev/pricing'
143
- : tier === 'pro'
144
- ? ' Upgrade to Max ($29/mo) for 500/hr → https://webpeel.dev/pricing'
145
- : '';
146
- res.status(429).json({
147
- success: false,
148
- error: {
149
- type: 'burst_limit_exceeded',
150
- message: `Hourly burst limit exceeded (${burst.count}/${burst.limit} on ${tier} plan). Resets in ${burst.resetsIn}.`,
151
- hint: `Retry after ${burst.resetsIn}.${upgradeHint}`,
152
- docs: 'https://webpeel.dev/docs/errors#rate-limited',
153
- },
154
- metadata: { requestId: req.requestId },
155
- });
156
- return;
157
- }
158
- // Add burst headers
159
- res.setHeader('X-Burst-Limit', burst.limit.toString());
160
- res.setHeader('X-Burst-Used', burst.count.toString());
161
- res.setHeader('X-Burst-Remaining', burst.remaining.toString());
162
- // SOFT LIMIT: Check weekly usage
163
- const { allowed, usage } = await authStore.checkLimit(apiKey);
164
- // Check if extra usage is available
165
- if (!allowed) {
166
- extraUsageAvailable = await authStore.canUseExtraUsage(apiKey);
167
- if (!extraUsageAvailable) {
168
- // Over weekly quota, no extra usage — SOFT LIMIT (degrade to HTTP-only)
169
- softLimited = true;
170
- res.setHeader('X-Soft-Limited', 'true');
171
- res.setHeader('X-Soft-Limit-Reason', 'Weekly quota exceeded. Requests degraded to HTTP-only mode.');
172
- res.setHeader('X-Upgrade-URL', 'https://webpeel.dev/pricing');
173
- }
174
- }
175
- // Add weekly usage headers
176
- if (usage) {
177
- res.setHeader('X-Weekly-Limit', usage.totalAvailable.toString());
178
- res.setHeader('X-Weekly-Used', usage.totalUsed.toString());
179
- res.setHeader('X-Weekly-Remaining', Math.max(0, usage.remaining).toString());
180
- res.setHeader('X-Weekly-Percent', usage.percentUsed.toString());
181
- res.setHeader('X-Weekly-Resets-At', usage.resetsAt);
182
- // Warn if over 80% usage and not using extra usage
183
- if (usage.percentUsed >= 80 && !softLimited && !extraUsageAvailable) {
184
- res.setHeader('X-Usage-Warning', `You've used ${usage.percentUsed}% of your weekly quota. Consider upgrading at https://webpeel.dev/pricing`);
185
- }
186
- }
187
- // Add extra usage headers if available
188
- const extraInfo = await authStore.getExtraUsageInfo(apiKey);
189
- if (extraInfo) {
190
- res.setHeader('X-Extra-Usage-Enabled', extraInfo.enabled ? 'true' : 'false');
191
- res.setHeader('X-Extra-Usage-Balance', extraInfo.balance.toFixed(2));
192
- if (extraInfo.enabled) {
193
- res.setHeader('X-Extra-Usage-Spent', extraInfo.spent.toFixed(2));
194
- res.setHeader('X-Extra-Usage-Limit', extraInfo.spendingLimit.toFixed(2));
195
- }
196
- }
197
- }
198
- }
199
- // Set auth context on request
200
- req.auth = {
201
- keyInfo,
202
- tier: keyInfo?.tier || 'free',
203
- rateLimit: keyInfo?.rateLimit || 10,
204
- softLimited,
205
- extraUsageAvailable,
206
- };
207
- next();
208
- }
209
- catch (_error) {
210
- res.status(500).json({
211
- success: false,
212
- error: {
213
- type: 'internal_error',
214
- message: 'Authentication failed',
215
- docs: 'https://webpeel.dev/docs/errors#internal-error',
216
- },
217
- metadata: { requestId: req.requestId },
218
- });
219
- }
220
- };
221
- }
222
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/server/middleware/auth.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Sliding window rate limiting middleware
3
- */
4
- import { Request, Response, NextFunction } from 'express';
5
- import '../types.js';
6
- export declare class RateLimiter {
7
- private store;
8
- private windowMs;
9
- constructor(windowMs?: number);
10
- /**
11
- * Check if request is allowed under rate limit
12
- * @param cost - Number of credits this request costs (default: 1)
13
- */
14
- checkLimit(identifier: string, limit: number, cost?: number): {
15
- allowed: boolean;
16
- remaining: number;
17
- retryAfter?: number;
18
- };
19
- /**
20
- * Clean up old entries (call periodically)
21
- */
22
- cleanup(): void;
23
- }
24
- export declare function createRateLimitMiddleware(limiter: RateLimiter): (req: Request, res: Response, next: NextFunction) => void;
25
- //# sourceMappingURL=rate-limit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../../src/server/middleware/rate-limit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,aAAa,CAAC;AAMrB,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,GAAE,MAAc;IAIpC;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG;QAC/D,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;IAuCD;;OAEG;IACH,OAAO,IAAI,IAAI;CAWhB;AA8BD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,WAAW,IACpD,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAoF/D"}