@wenathlan/saddle 2.1.6 → 2.1.7

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 (291) hide show
  1. package/Dockerfile +158 -60
  2. package/LICENSE +0 -0
  3. package/README.md +68 -53
  4. package/alternatives.ts +0 -0
  5. package/biome.jsonc +134 -0
  6. package/boards.json +2 -2
  7. package/compute.ts +4 -4
  8. package/cores.json +2 -2
  9. package/docker.config +37 -9
  10. package/docs/.gitkeep +0 -0
  11. package/docs/actionrecorder.md +0 -0
  12. package/docs/actionsincident.md +0 -0
  13. package/docs/alternatives.md +0 -0
  14. package/docs/architecture.md +0 -0
  15. package/docs/{architecture-1.8.19.md → architecture1819.md} +0 -0
  16. package/docs/{architecture-1.8.19.mmd → architecture1819.mmd} +0 -0
  17. package/docs/artifactavailability.md +2 -2
  18. package/docs/{artifactresearch-1.8.9.md → artifactresearch189.md} +0 -0
  19. package/docs/{batches-1816-1820.md → batches1816to1820.md} +0 -0
  20. package/docs/{brancharchive-2026-08-18.md → brancharchive20260818.md} +0 -0
  21. package/docs/branchaudit.md +0 -0
  22. package/docs/browser.md +0 -0
  23. package/docs/capabilityreport.md +0 -0
  24. package/docs/comparativeaudit.md +0 -0
  25. package/docs/consolidation.md +0 -0
  26. package/docs/{containerplatforms-1.8.17.md → containerplatforms1817.md} +0 -0
  27. package/docs/{containerplatforms-2.1.0.md → containerplatforms210.md} +1 -1
  28. package/docs/{documentmap-1.8.12.md → documentmap1812.md} +1 -1
  29. package/docs/{e2ugh-engine.md → e2ughengine.md} +0 -0
  30. package/docs/ecosystemplan.md +0 -0
  31. package/docs/enginearchitecture.md +0 -0
  32. package/docs/extension.md +0 -0
  33. package/docs/featureaudit.md +0 -0
  34. package/docs/{flatbuildresearch-1.8.11.md → flatbuildresearch1811.md} +0 -0
  35. package/docs/gapmatrix.md +0 -0
  36. package/docs/hardware.md +0 -0
  37. package/docs/libraryapi.md +0 -0
  38. package/docs/{licenseaudit-1.8.12.md → licenseaudit1812.md} +0 -0
  39. package/docs/logs/examplesession.json +54 -0
  40. package/docs/memoryengine.md +0 -0
  41. package/docs/{mobileconversionresearch-1.8.10.md → mobileconversionresearch1810.md} +0 -0
  42. package/docs/modes.md +0 -0
  43. package/docs/{nativeidentityresearch-1.8.11.md → nativeidentityresearch1811.md} +0 -0
  44. package/docs/{native-wrappers.md → nativewrappers.md} +0 -0
  45. package/docs/ninetymodalities.md +191 -0
  46. package/docs/optimization.md +0 -0
  47. package/docs/packageaudit185.md +0 -0
  48. package/docs/performance.md +0 -0
  49. package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
  50. package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
  51. package/docs/planningengine.md +186 -0
  52. package/docs/planningninety.md +391 -0
  53. package/docs/platformpipelineaudit.md +0 -0
  54. package/docs/platformpipelines.md +0 -0
  55. package/docs/productindex.md +0 -0
  56. package/docs/registryresearch.md +0 -0
  57. package/docs/release.md +0 -0
  58. package/docs/release17notes.md +0 -0
  59. package/docs/release181notes.md +0 -0
  60. package/docs/release182notes.md +0 -0
  61. package/docs/release184notes.md +0 -0
  62. package/docs/release185notes.md +0 -0
  63. package/docs/release18notes.md +0 -0
  64. package/docs/releaseassets.md +0 -0
  65. package/docs/{releasenotes-1.8.12.md → releasenotes1812.md} +0 -0
  66. package/docs/{releasenotes-1.8.13.md → releasenotes1813.md} +2 -2
  67. package/docs/{releasenotes-1.8.14.md → releasenotes1814.md} +1 -1
  68. package/docs/{releasenotes-1.8.15.md → releasenotes1815.md} +0 -0
  69. package/docs/{releasenotes-1.8.16.md → releasenotes1816.md} +0 -0
  70. package/docs/{releasenotes-1.8.17.md → releasenotes1817.md} +0 -0
  71. package/docs/{releasenotes-1.8.18.md → releasenotes1818.md} +0 -0
  72. package/docs/{releasenotes-1.8.19.md → releasenotes1819.md} +0 -0
  73. package/docs/{reorganization-1.8.8.md → reorganization188.md} +0 -0
  74. package/docs/{reorganization-1.8.9.md → reorganization189.md} +0 -0
  75. package/docs/{repo-analysis-1.8.21.json → repoanalysis1821.json} +0 -0
  76. package/docs/{repo-candidates-1.8.21.jsonl → repocandidates1821.jsonl} +0 -0
  77. package/docs/{repo-research-1.8.16.md → reporesearch1816.md} +0 -0
  78. package/docs/{repo-research-1.8.21.md → reporesearch1821.md} +0 -0
  79. package/docs/{repo-selected-1.8.21.json → reposelected1821.json} +0 -0
  80. package/docs/{repo-synthesis-1.8.16.md → reposynthesis1816.md} +1 -1
  81. package/docs/{repo-synthesis-1.8.21.md → reposynthesis1821.md} +0 -0
  82. package/docs/{research-1.8.18-isolation.md → research1818isolation.md} +0 -0
  83. package/docs/{research-1.8.19-virtual-browser.md → research1819virtualbrowser.md} +0 -0
  84. package/docs/roadmapp2p3.md +0 -0
  85. package/docs/s3compatible.md +0 -0
  86. package/docs/{scanningresearch-1.8.11.md → scanningresearch1811.md} +0 -0
  87. package/docs/security.md +0 -0
  88. package/docs/{securityaudit-1.8.7.md → securityaudit187.md} +0 -0
  89. package/docs/{securityreferences-1.8.11.md → securityreferences1811.md} +0 -0
  90. package/docs/{securityresearch-1.8.11.md → securityresearch1811.md} +0 -0
  91. package/docs/{signingresearch-1.8.12.md → signingresearch1812.md} +0 -0
  92. package/docs/signingwithoutcertificates.md +0 -0
  93. package/docs/signpathapplication.md +0 -0
  94. package/docs/sitemap.md +0 -0
  95. package/docs/{tauri-glib-risk-1.8.11.md → tauriglibrisk1811.md} +0 -0
  96. package/docs/todo.md +2 -2
  97. package/docs/{todo-1.8.15.md → todo1815.md} +1 -1
  98. package/docs/{todo-1.8.16.md → todo1816.md} +5 -5
  99. package/docs/{todo-1.8.18.md → todo1818.md} +0 -0
  100. package/docs/{todo-1.8.19.md → todo1819.md} +0 -0
  101. package/docs/{toolchainresearch-1.8.9.md → toolchainresearch189.md} +0 -0
  102. package/docs/toolchains.md +0 -0
  103. package/docs/usage.md +0 -0
  104. package/docs/viability.md +0 -0
  105. package/docs/virtualization.md +0 -0
  106. package/docs/{web-duplicatecleanup.md → webduplicatecleanup.md} +0 -0
  107. package/docs/{web-ideas.md → webideas.md} +0 -0
  108. package/docs/{workflowimprovements-2026-08-19.md → workflowimprovements20260819.md} +0 -0
  109. package/docs/workflowinputs.md +0 -0
  110. package/docs/workflowoperations.md +0 -0
  111. package/docs/workloadlaw.md +104 -0
  112. package/gpumonitor.cpp +0 -0
  113. package/gpus.json +1 -1
  114. package/index.ts +19 -10
  115. package/manifest.json +20 -0
  116. package/modalityregistry.ts +1493 -0
  117. package/mttg.config +1 -1
  118. package/orchestrator.ts +52 -15
  119. package/package.json +192 -99
  120. package/passage.config +0 -0
  121. package/performance.ts +0 -0
  122. package/processors.json +1 -1
  123. package/qemu.config +2 -2
  124. package/qemubridge.py +0 -0
  125. package/quantum.ts +0 -0
  126. package/render.ts +0 -0
  127. package/scheduler.ts +0 -0
  128. package/security.ts +0 -0
  129. package/tiers.ts +9 -3
  130. package/tsconfig.json +21 -11
  131. package/virtualcpu.ts +1 -0
  132. package/virtualgpu.ts +1 -0
  133. package/virtualhardware.c +0 -0
  134. package/virtualhardware.json +2 -2
  135. package/virtualization.ts +0 -0
  136. package/virtualizationcore.cpp +0 -0
  137. package/virtualmemory.ts +0 -0
  138. package/vm.config.json +2 -2
  139. package/biome.json +0 -151
  140. package/dist/acquisition.d.ts +0 -359
  141. package/dist/acquisition.d.ts.map +0 -1
  142. package/dist/acquisition.js +0 -629
  143. package/dist/acquisition.js.map +0 -1
  144. package/dist/alternatives.d.ts +0 -509
  145. package/dist/alternatives.d.ts.map +0 -1
  146. package/dist/alternatives.js +0 -951
  147. package/dist/alternatives.js.map +0 -1
  148. package/dist/automation.d.ts +0 -426
  149. package/dist/automation.d.ts.map +0 -1
  150. package/dist/automation.js +0 -561
  151. package/dist/automation.js.map +0 -1
  152. package/dist/browser.d.ts +0 -562
  153. package/dist/browser.d.ts.map +0 -1
  154. package/dist/browser.js +0 -1057
  155. package/dist/browser.js.map +0 -1
  156. package/dist/cli.d.ts +0 -17
  157. package/dist/cli.d.ts.map +0 -1
  158. package/dist/cli.js +0 -169
  159. package/dist/cli.js.map +0 -1
  160. package/dist/communication.d.ts +0 -192
  161. package/dist/communication.d.ts.map +0 -1
  162. package/dist/communication.js +0 -418
  163. package/dist/communication.js.map +0 -1
  164. package/dist/compute.d.ts +0 -1161
  165. package/dist/compute.d.ts.map +0 -1
  166. package/dist/compute.js +0 -2273
  167. package/dist/compute.js.map +0 -1
  168. package/dist/distribution.d.ts +0 -529
  169. package/dist/distribution.d.ts.map +0 -1
  170. package/dist/distribution.js +0 -811
  171. package/dist/distribution.js.map +0 -1
  172. package/dist/docs/example-localjob.d.ts +0 -2
  173. package/dist/docs/example-localjob.d.ts.map +0 -1
  174. package/dist/docs/example-localjob.js +0 -15
  175. package/dist/docs/example-localjob.js.map +0 -1
  176. package/dist/docs/example-publicapi.d.ts +0 -2
  177. package/dist/docs/example-publicapi.d.ts.map +0 -1
  178. package/dist/docs/example-publicapi.js +0 -7
  179. package/dist/docs/example-publicapi.js.map +0 -1
  180. package/dist/execution.d.ts +0 -530
  181. package/dist/execution.d.ts.map +0 -1
  182. package/dist/execution.js +0 -761
  183. package/dist/execution.js.map +0 -1
  184. package/dist/format.d.ts +0 -19
  185. package/dist/format.d.ts.map +0 -1
  186. package/dist/format.js +0 -60
  187. package/dist/format.js.map +0 -1
  188. package/dist/foundation.d.ts +0 -176
  189. package/dist/foundation.d.ts.map +0 -1
  190. package/dist/foundation.js +0 -309
  191. package/dist/foundation.js.map +0 -1
  192. package/dist/index.d.ts +0 -735
  193. package/dist/index.d.ts.map +0 -1
  194. package/dist/index.js +0 -1020
  195. package/dist/index.js.map +0 -1
  196. package/dist/integration.d.ts +0 -236
  197. package/dist/integration.d.ts.map +0 -1
  198. package/dist/integration.js +0 -236
  199. package/dist/integration.js.map +0 -1
  200. package/dist/intelligence.d.ts +0 -94
  201. package/dist/intelligence.d.ts.map +0 -1
  202. package/dist/intelligence.js +0 -145
  203. package/dist/intelligence.js.map +0 -1
  204. package/dist/isolation.d.ts +0 -129
  205. package/dist/isolation.d.ts.map +0 -1
  206. package/dist/isolation.js +0 -96
  207. package/dist/isolation.js.map +0 -1
  208. package/dist/media.d.ts +0 -344
  209. package/dist/media.d.ts.map +0 -1
  210. package/dist/media.js +0 -986
  211. package/dist/media.js.map +0 -1
  212. package/dist/modes.d.ts +0 -359
  213. package/dist/modes.d.ts.map +0 -1
  214. package/dist/modes.js +0 -134
  215. package/dist/modes.js.map +0 -1
  216. package/dist/operations.d.ts +0 -67
  217. package/dist/operations.d.ts.map +0 -1
  218. package/dist/operations.js +0 -94
  219. package/dist/operations.js.map +0 -1
  220. package/dist/orchestrator.d.ts +0 -1339
  221. package/dist/orchestrator.d.ts.map +0 -1
  222. package/dist/orchestrator.js +0 -4308
  223. package/dist/orchestrator.js.map +0 -1
  224. package/dist/packager/targetcli.js +0 -4
  225. package/dist/performance.d.ts +0 -416
  226. package/dist/performance.d.ts.map +0 -1
  227. package/dist/performance.js +0 -827
  228. package/dist/performance.js.map +0 -1
  229. package/dist/quantum.d.ts +0 -810
  230. package/dist/quantum.d.ts.map +0 -1
  231. package/dist/quantum.js +0 -2073
  232. package/dist/quantum.js.map +0 -1
  233. package/dist/render.d.ts +0 -381
  234. package/dist/render.d.ts.map +0 -1
  235. package/dist/render.js +0 -1073
  236. package/dist/render.js.map +0 -1
  237. package/dist/scheduler.d.ts +0 -596
  238. package/dist/scheduler.d.ts.map +0 -1
  239. package/dist/scheduler.js +0 -1259
  240. package/dist/scheduler.js.map +0 -1
  241. package/dist/security.d.ts +0 -501
  242. package/dist/security.d.ts.map +0 -1
  243. package/dist/security.js +0 -1170
  244. package/dist/security.js.map +0 -1
  245. package/dist/server.d.ts +0 -21
  246. package/dist/server.d.ts.map +0 -1
  247. package/dist/server.js +0 -52
  248. package/dist/server.js.map +0 -1
  249. package/dist/tiers.d.ts +0 -1002
  250. package/dist/tiers.d.ts.map +0 -1
  251. package/dist/tiers.js +0 -2165
  252. package/dist/tiers.js.map +0 -1
  253. package/dist/virtual.d.ts +0 -641
  254. package/dist/virtual.d.ts.map +0 -1
  255. package/dist/virtual.js +0 -1285
  256. package/dist/virtual.js.map +0 -1
  257. package/dist/virtualcpu.d.ts +0 -316
  258. package/dist/virtualcpu.d.ts.map +0 -1
  259. package/dist/virtualcpu.js +0 -1180
  260. package/dist/virtualcpu.js.map +0 -1
  261. package/dist/virtualgpu.d.ts +0 -345
  262. package/dist/virtualgpu.d.ts.map +0 -1
  263. package/dist/virtualgpu.js +0 -1000
  264. package/dist/virtualgpu.js.map +0 -1
  265. package/dist/virtualization.d.ts +0 -607
  266. package/dist/virtualization.d.ts.map +0 -1
  267. package/dist/virtualization.js +0 -1187
  268. package/dist/virtualization.js.map +0 -1
  269. package/dist/virtualmemory.d.ts +0 -818
  270. package/dist/virtualmemory.d.ts.map +0 -1
  271. package/dist/virtualmemory.js +0 -1796
  272. package/dist/virtualmemory.js.map +0 -1
  273. package/dist/vitest.config.d.ts +0 -3
  274. package/dist/vitest.config.d.ts.map +0 -1
  275. package/dist/vitest.config.js +0 -26
  276. package/dist/vitest.config.js.map +0 -1
  277. package/dist/webscrape.d.ts +0 -720
  278. package/dist/webscrape.d.ts.map +0 -1
  279. package/dist/webscrape.js +0 -2697
  280. package/dist/webscrape.js.map +0 -1
  281. package/docs/CONVERSA.txt +0 -1523
  282. package/docs/architecture-1.8.19.png +0 -0
  283. package/docs/assets/architecture.svg +0 -45
  284. package/docs/assets/saddlemark.svg +0 -13
  285. package/docs/example-localjob.ts +0 -15
  286. package/docs/example-publicapi.ts +0 -7
  287. package/docs/saddle.archive.1.8.17.tar.gz.gpg +0 -0
  288. package/media.ts +0 -1337
  289. package/web/manifest.json +0 -30
  290. package/web/readme.md +0 -383
  291. package/web/tsconfig.json +0 -25
@@ -1,720 +0,0 @@
1
- /**
2
- * webscrape.ts — the legacy WebScrape toolkit generation.
3
- *
4
- * This file carries the complete legacy scrape sub-project of the former
5
- * repository (thirty sections: types, errors, utils, port, tokens,
6
- * chunking, formats, serialize, headers, session, pool, proxy, proxypool,
7
- * rate-limiter, retry, middleware, events, renderer, sitemap, agent,
8
- * llms-txt, fetch, batch, browser, scrape, crawler, server, cli and
9
- * dev-server) consolidated into the single root-level file of the grand
10
- * merge. The optional npm runtimes of the toolkit (emittery, p-limit,
11
- * p-retry, cheerio, playwright, hono, commander) load lazily so nothing is
12
- * required at module load that the package does not ship; the CLI,
13
- * dev-server and hono API bootstraps are exported factories.
14
- */
15
- import { z } from "zod";
16
- import type Emittery from "emittery";
17
- export declare const ScrapeFormatSchema: z.ZodEnum<{
18
- html: "html";
19
- json: "json";
20
- markdown: "markdown";
21
- redis: "redis";
22
- text: "text";
23
- xml: "xml";
24
- }>;
25
- export type ScrapeFormat = z.infer<typeof ScrapeFormatSchema>;
26
- export declare const SerializeTargetSchema: z.ZodEnum<{
27
- json: "json";
28
- markdown: "markdown";
29
- redis: "redis";
30
- text: "text";
31
- xml: "xml";
32
- }>;
33
- export type SerializeTarget = z.infer<typeof SerializeTargetSchema>;
34
- export declare const ScrapeOptionsSchema: z.ZodObject<{
35
- url: z.ZodOptional<z.ZodString>;
36
- html: z.ZodOptional<z.ZodString>;
37
- mode: z.ZodOptional<z.ZodPrefault<z.ZodEnum<{
38
- auto: "auto";
39
- browser: "browser";
40
- fetch: "fetch";
41
- }>>>;
42
- waitUntil: z.ZodOptional<z.ZodPrefault<z.ZodEnum<{
43
- commit: "commit";
44
- domcontentloaded: "domcontentloaded";
45
- load: "load";
46
- networkidle: "networkidle";
47
- }>>>;
48
- timeout: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
49
- scroll: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
50
- scrollDelay: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
51
- maxScrolls: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
52
- removeSelectors: z.ZodOptional<z.ZodPrefault<z.ZodArray<z.ZodString>>>;
53
- extractImages: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
54
- extractLinks: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
55
- extractTables: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
56
- maxContentLength: z.ZodOptional<z.ZodNumber>;
57
- format: z.ZodOptional<z.ZodPrefault<z.ZodEnum<{
58
- html: "html";
59
- json: "json";
60
- markdown: "markdown";
61
- redis: "redis";
62
- text: "text";
63
- xml: "xml";
64
- }>>>;
65
- language: z.ZodOptional<z.ZodString>;
66
- proxy: z.ZodOptional<z.ZodString>;
67
- retries: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
68
- retryDelay: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
69
- userAgent: z.ZodOptional<z.ZodString>;
70
- headers: z.ZodOptional<z.ZodPrefault<z.ZodRecord<z.ZodString, z.ZodString>>>;
71
- cache: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
72
- cacheTtlMs: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
73
- readable: z.ZodOptional<z.ZodBoolean>;
74
- }, z.core.$strict>;
75
- export type ScrapeOptions = z.infer<typeof ScrapeOptionsSchema>;
76
- export interface ScrapeResult {
77
- url: string;
78
- title: string;
79
- content: string;
80
- format: ScrapeFormat;
81
- text: string;
82
- links: LegacyLinkInfo[];
83
- images: LegacyImageInfo[];
84
- tables: LegacyTableInfo[];
85
- metadata: LegacyPageMetadata;
86
- extractedAt: string;
87
- duration: number;
88
- size: number;
89
- }
90
- export interface LegacyPageMetadata {
91
- title: string;
92
- description?: string;
93
- favicon?: string;
94
- charset?: string;
95
- language?: string;
96
- author?: string;
97
- publishedDate?: string;
98
- ogImage?: string;
99
- ogType?: string;
100
- keywords?: string[];
101
- }
102
- export interface LegacyLinkInfo {
103
- href: string;
104
- text: string;
105
- isInternal: boolean;
106
- isExternal: boolean;
107
- }
108
- export interface LegacyImageInfo {
109
- src: string;
110
- alt: string;
111
- width?: number;
112
- height?: number;
113
- }
114
- export interface LegacyTableInfo {
115
- headers: string[];
116
- rows: string[][];
117
- caption?: string;
118
- }
119
- export declare const BrowserAgentConfigSchema: z.ZodObject<{
120
- headless: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
121
- userAgent: z.ZodOptional<z.ZodString>;
122
- viewport: z.ZodOptional<z.ZodPrefault<z.ZodObject<{
123
- width: z.ZodPrefault<z.ZodNumber>;
124
- height: z.ZodPrefault<z.ZodNumber>;
125
- }, z.core.$strict>>>;
126
- locale: z.ZodOptional<z.ZodPrefault<z.ZodString>>;
127
- geolocation: z.ZodOptional<z.ZodObject<{
128
- latitude: z.ZodNumber;
129
- longitude: z.ZodNumber;
130
- }, z.core.$strict>>;
131
- timeout: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
132
- recordVideo: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
133
- proxy: z.ZodOptional<z.ZodPrefault<z.ZodString>>;
134
- storageState: z.ZodOptional<z.ZodPrefault<z.ZodString>>;
135
- blockAds: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
136
- stealth: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
137
- }, z.core.$strict>;
138
- export type BrowserAgentConfig = z.infer<typeof BrowserAgentConfigSchema>;
139
- export interface LegacyExtractOptions {
140
- readable?: boolean;
141
- stripTags?: string[];
142
- preserveLinks?: boolean;
143
- preserveImages?: boolean;
144
- preserveTables?: boolean;
145
- maxLength?: number;
146
- removeSelectors?: string[];
147
- baseUrl?: string;
148
- }
149
- export interface SerializeOptions {
150
- format: SerializeTarget;
151
- pretty?: boolean;
152
- maxChunkSize?: number;
153
- includeMetadata?: boolean;
154
- redisKey?: string;
155
- xmlRoot?: string;
156
- }
157
- export interface SerializedOutput {
158
- format: SerializeTarget;
159
- content: string;
160
- chunks?: string[];
161
- size: number;
162
- metadata?: Record<string, unknown>;
163
- }
164
- export interface AgentOutput {
165
- summary: string;
166
- content: string;
167
- keyPoints: string[];
168
- relevantUrls: string[];
169
- structured?: Record<string, unknown>;
170
- tokens: number;
171
- }
172
- export interface RenderOptions {
173
- width?: number;
174
- height?: number;
175
- fullPage?: boolean;
176
- type?: 'png' | 'jpeg';
177
- quality?: number;
178
- output?: string;
179
- }
180
- export interface ChromeCommand {
181
- action: 'goto' | 'click' | 'type' | 'screenshot' | 'evaluate' | 'wait' | 'scroll' | 'extract';
182
- args?: Record<string, unknown>;
183
- }
184
- export interface CliOptions {
185
- url?: string;
186
- file?: string;
187
- format?: ScrapeFormat;
188
- output?: string;
189
- 'no-headless'?: boolean;
190
- timeout?: number;
191
- scroll?: boolean;
192
- readable?: boolean;
193
- agent?: boolean;
194
- pretty?: boolean;
195
- proxy?: string;
196
- retries?: number;
197
- mode?: 'auto' | 'fetch' | 'browser';
198
- }
199
- export interface RetryConfig {
200
- retries: number;
201
- delay: number;
202
- backoff: 'exponential' | 'linear' | 'constant';
203
- maxDelay?: number;
204
- statusCodes?: number[];
205
- }
206
- export interface ProxyConfig {
207
- url: string;
208
- username?: string;
209
- password?: string;
210
- }
211
- export interface LegacyCacheConfig {
212
- enabled: boolean;
213
- ttlMs?: number;
214
- maxEntries?: number;
215
- storage?: 'memory' | 'redis' | 'sqlite' | 'indexeddb';
216
- }
217
- export interface CrawlStats {
218
- totalUrls: number;
219
- successful: number;
220
- failed: number;
221
- skipped: number;
222
- duration: number;
223
- avgResponseTime: number;
224
- }
225
- export interface BatchOptions {
226
- urls: string[];
227
- concurrency?: number;
228
- mode?: 'auto' | 'fetch' | 'browser';
229
- format?: ScrapeFormat;
230
- onProgress?: (completed: number, total: number, currentUrl: string) => void;
231
- onError?: (url: string, error: Error) => void;
232
- }
233
- export declare const ErrorCode: {
234
- readonly VALIDATION_FAILED: 'VALIDATION_FAILED';
235
- readonly INVALID_URL: 'INVALID_URL';
236
- readonly TIMEOUT: 'TIMEOUT';
237
- readonly BLOCKED: 'BLOCKED';
238
- readonly RATE_LIMITED: 'RATE_LIMITED';
239
- readonly PROXY_ERROR: 'PROXY_ERROR';
240
- readonly PARSE_ERROR: 'PARSE_ERROR';
241
- readonly AUTH_REQUIRED: 'AUTH_REQUIRED';
242
- readonly NETWORK_ERROR: 'NETWORK_ERROR';
243
- readonly BROWSER_NOT_AVAILABLE: 'BROWSER_NOT_AVAILABLE';
244
- readonly CRAWL_DEPTH_EXCEEDED: 'CRAWL_DEPTH_EXCEEDED';
245
- readonly MAX_RETRIES_EXCEEDED: 'MAX_RETRIES_EXCEEDED';
246
- };
247
- export type ErrorCode = typeof ErrorCode[keyof typeof ErrorCode];
248
- export declare class WebScrapeError extends Error {
249
- readonly code: ErrorCode;
250
- readonly statusCode: number;
251
- readonly isRetryable: boolean;
252
- readonly timestamp: string;
253
- readonly details?: Record<string, unknown>;
254
- readonly cause?: Error;
255
- constructor(message: string, code: ErrorCode, statusCode: number, isRetryable: boolean, details?: Record<string, unknown>, cause?: Error);
256
- toJSON(): {
257
- error: {
258
- name: string;
259
- code: ErrorCode;
260
- message: string;
261
- statusCode: number;
262
- isRetryable: boolean;
263
- timestamp: string;
264
- details: Record<string, unknown>;
265
- };
266
- };
267
- }
268
- export declare class ValidationError extends WebScrapeError {
269
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
270
- }
271
- export declare class TimeoutError extends WebScrapeError {
272
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
273
- }
274
- export declare class BlockedError extends WebScrapeError {
275
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
276
- }
277
- export declare class RateLimitError extends WebScrapeError {
278
- readonly retryAfterMs?: number;
279
- constructor(message: string, retryAfterMs?: number, details?: Record<string, unknown>, cause?: Error);
280
- }
281
- export declare class ProxyError extends WebScrapeError {
282
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
283
- }
284
- export declare class ParseError extends WebScrapeError {
285
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
286
- }
287
- export declare class AuthError extends WebScrapeError {
288
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
289
- }
290
- export declare class NetworkError extends WebScrapeError {
291
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
292
- }
293
- export declare class BrowserNotAvailableError extends WebScrapeError {
294
- constructor(message?: string, details?: Record<string, unknown>);
295
- }
296
- export declare function ensureDir(path: string): void;
297
- export declare function writeOutput(path: string, content: string): void;
298
- export declare function slugify(text: string): string;
299
- export declare function truncate(text: string, max: number, suffix?: string): string;
300
- export declare function legacyestimatetokens(text: string): number;
301
- export declare function legacychunktext(text: string, chunkSize: number): string[];
302
- export declare function delay(ms: number): Promise<void>;
303
- export declare function isValidUrl(url: string): boolean;
304
- export declare function normalizeUrl(url: string, base?: string): string;
305
- export declare function isInternalUrl(href: string, base: string): boolean;
306
- export declare function randomPort(): number;
307
- /**
308
- * Reset the cached port (for testing).
309
- */
310
- export declare function resetPort(): void;
311
- export type ModelType = 'gpt-4o' | 'gpt-4' | 'gpt-3.5-turbo' | 'claude' | 'gemini' | 'default';
312
- export declare function estimateTokens(text: string, model?: ModelType): number;
313
- export declare function countTokens(text: string, model?: ModelType): number;
314
- export declare function fitsInContext(text: string, maxTokens: number, model?: ModelType): boolean;
315
- export declare function truncateToTokens(text: string, maxTokens: number, model?: ModelType): string;
316
- export declare function tokenCost(text: string, model: ModelType, pricePer1kTokens: number): number;
317
- export declare const MODEL_PRICES: Record<string, {
318
- input: number;
319
- output: number;
320
- }>;
321
- export interface ChunkOptions {
322
- maxTokens?: number;
323
- overlapTokens?: number;
324
- preserveCodeBlocks?: boolean;
325
- includeHeadingPath?: boolean;
326
- }
327
- export interface Chunk {
328
- content: string;
329
- headingPath: string[];
330
- tokenCount: number;
331
- index: number;
332
- }
333
- export declare function chunkMarkdown(markdown: string, options?: ChunkOptions): Chunk[];
334
- export declare function chunkText(text: string, options?: ChunkOptions): Chunk[];
335
- export declare function formatChunksForRAG(chunks: Chunk[]): string;
336
- export declare function resolveFormat(format: string): ScrapeFormat;
337
- export declare function formatFromExtension(ext: string): ScrapeFormat | null;
338
- export declare function extensionForFormat(format: ScrapeFormat): string;
339
- export declare function detectContentType(html: string): 'article' | 'list' | 'page' | 'other';
340
- export declare function buildSerializeOptions(format: ScrapeFormat, pretty?: boolean): SerializeOptions;
341
- export declare function convertResult(result: ScrapeResult, targetFormat: ScrapeFormat): Promise<ScrapeResult>;
342
- export declare function serializeResult(result: ScrapeResult, options: SerializeOptions): SerializedOutput;
343
- export declare function serializeHtml(html: string, options: SerializeOptions): SerializedOutput;
344
- export interface HeaderProfile {
345
- userAgent: string;
346
- accept: string;
347
- acceptLanguage: string;
348
- secChUa: string;
349
- secChUaPlatform: string;
350
- }
351
- export declare function getRandomProfile(): HeaderProfile;
352
- export declare function getHeaders(profile?: HeaderProfile): Record<string, string>;
353
- export declare function mergeHeaders(base: Record<string, string>, override: Record<string, string>): Record<string, string>;
354
- export interface Cookie {
355
- name: string;
356
- value: string;
357
- domain?: string;
358
- path?: string;
359
- expires?: number;
360
- httpOnly?: boolean;
361
- secure?: boolean;
362
- }
363
- export declare class CookieJar {
364
- private cookies;
365
- set(cookie: Cookie): void;
366
- get(name: string, domain?: string, _path?: string): Cookie | undefined;
367
- getAll(domain?: string): Cookie[];
368
- toString(domain?: string): string;
369
- parseSetCookie(header: string, defaultDomain?: string): void;
370
- clear(): void;
371
- }
372
- export declare class ScrapingSession {
373
- readonly cookieJar: CookieJar;
374
- readonly id: string;
375
- private data;
376
- constructor(id?: string);
377
- get<T = unknown>(key: string): T | undefined;
378
- set(key: string, value: unknown): void;
379
- clear(): void;
380
- }
381
- export declare function createSession(id?: string): ScrapingSession;
382
- export interface PoolConfig {
383
- maxSize?: number;
384
- acquireTimeoutMs?: number;
385
- }
386
- export declare class BrowserPool {
387
- private pool;
388
- private waitQueue;
389
- private config;
390
- private browserConfig;
391
- constructor(config?: PoolConfig, browserConfig?: BrowserAgentConfig);
392
- acquire(): Promise<AgentBrowser>;
393
- release(browser: AgentBrowser): void;
394
- destroy(): Promise<void>;
395
- getStatus(): {
396
- total: number;
397
- idle: number;
398
- inUse: number;
399
- waiting: number;
400
- };
401
- }
402
- export declare function createPool(config?: PoolConfig, browserConfig?: BrowserAgentConfig): BrowserPool;
403
- export type ProxyRotationStrategy = 'round-robin' | 'random';
404
- export interface ProxyPoolConfig {
405
- maxFailures?: number;
406
- reviveAfterMs?: number;
407
- strategy?: ProxyRotationStrategy;
408
- }
409
- export declare class ProxyPool {
410
- private proxies;
411
- private stats;
412
- private currentIndex;
413
- private config;
414
- constructor(proxies: ProxyConfig[], config?: Partial<ProxyPoolConfig>);
415
- private getActiveProxies;
416
- next(): ProxyConfig | null;
417
- reportSuccess(proxy: ProxyConfig): void;
418
- reportFailure(proxy: ProxyConfig): void;
419
- getStatus(): {
420
- total: number;
421
- active: number;
422
- disabled: number;
423
- };
424
- }
425
- export declare function createProxyPool(proxies: ProxyConfig[], config?: Partial<ProxyPoolConfig>): ProxyPool;
426
- /**
427
- * proxy pool chooses healthy least used entries and never rotates blindly.
428
- */
429
- export declare function proxypool(options?: {}): {
430
- choose: () => any;
431
- report: (id: any, result?: {}) => any;
432
- list(): any;
433
- };
434
- export interface RateLimiterConfig {
435
- maxTokensPerInterval: number;
436
- intervalMs: number;
437
- maxConcurrent?: number;
438
- }
439
- export declare class RateLimiter {
440
- private buckets;
441
- private active;
442
- private config;
443
- constructor(config?: Partial<RateLimiterConfig>);
444
- private getBucket;
445
- private refill;
446
- acquire(key: string): Promise<void>;
447
- release(key: string): void;
448
- getStats(key: string): {
449
- tokens: number;
450
- active: number;
451
- };
452
- clear(): void;
453
- }
454
- export declare function createRateLimiter(config?: Partial<RateLimiterConfig>): RateLimiter;
455
- export declare const DEFAULT_RETRY_CONFIG: Required<RetryConfig>;
456
- export declare function isRetryableError(error: Error): boolean;
457
- export declare function withRetry<T>(fn: (attemptNumber: number) => Promise<T>, config?: Partial<RetryConfig>, onRetry?: (error: Error, attempt: number) => void): Promise<T>;
458
- /**
459
- * Loads the p-retry AbortError class lazily (the class was a value re-export
460
- * of the former scrape/retry.ts module; the grand merge keeps it reachable
461
- * without requiring p-retry at module load time).
462
- */
463
- export declare function loadaborterror(): Promise<any>;
464
- export interface MiddlewareContext<T = Record<string, unknown>> {
465
- data: T;
466
- state: Record<string, unknown>;
467
- startTime: number;
468
- aborted: boolean;
469
- abort(): void;
470
- }
471
- export type MiddlewareNext = () => Promise<void>;
472
- export type Middleware<T = Record<string, unknown>> = (ctx: MiddlewareContext<T>, next: MiddlewareNext) => Promise<void>;
473
- export declare class MiddlewarePipeline<T = Record<string, unknown>> {
474
- private middlewares;
475
- use(middleware: Middleware<T>): this;
476
- execute(initialData: T): Promise<MiddlewareContext<T>>;
477
- clear(): void;
478
- }
479
- export declare function loggingMiddleware(logger?: {
480
- info: (msg: string) => void;
481
- }): Middleware;
482
- export declare function timeoutMiddleware(timeoutMs: number): Middleware;
483
- export declare function retryMiddleware(maxRetries: number, delayMs: number): Middleware;
484
- export declare function createPipeline<T = Record<string, unknown>>(): MiddlewarePipeline<T>;
485
- export interface WebScrapeEvents {
486
- 'request:start': {
487
- url: string;
488
- options: ScrapeOptions;
489
- timestamp: number;
490
- };
491
- 'request:response': {
492
- url: string;
493
- status: number;
494
- attempt: number;
495
- duration: number;
496
- };
497
- 'request:error': {
498
- url: string;
499
- error: Error;
500
- attempt: number;
501
- };
502
- 'request:retry': {
503
- url: string;
504
- attempt: number;
505
- maxRetries: number;
506
- delayMs: number;
507
- };
508
- 'request:complete': {
509
- url: string;
510
- duration: number;
511
- success: boolean;
512
- };
513
- 'cache:hit': {
514
- key: string;
515
- };
516
- 'cache:miss': {
517
- key: string;
518
- };
519
- 'cache:set': {
520
- key: string;
521
- ttlMs?: number;
522
- };
523
- 'proxy:rotate': {
524
- proxy: string;
525
- reason: string;
526
- };
527
- 'proxy:error': {
528
- proxy: string;
529
- error: Error;
530
- };
531
- 'proxy:disabled': {
532
- proxy: string;
533
- reason: string;
534
- };
535
- 'crawl:discover': {
536
- url: string;
537
- depth: number;
538
- parentUrl?: string;
539
- };
540
- 'crawl:complete': {
541
- totalUrls: number;
542
- successful: number;
543
- failed: number;
544
- duration: number;
545
- };
546
- }
547
- export type EventEmitter = Emittery<WebScrapeEvents>;
548
- /**
549
- * Creates a fresh emittery event bus. Emittery joined the lazy-loading
550
- * contract of the grand merge: the optional runtime dependency is imported
551
- * on first use, so loading this module never requires it to be installed.
552
- */
553
- export declare function createEventEmitter(): Promise<EventEmitter>;
554
- export declare function globalEmitter(): any;
555
- interface PygameConfig {
556
- pythonPath?: string;
557
- width?: number;
558
- height?: number;
559
- fps?: number;
560
- fullscreen?: boolean;
561
- }
562
- export declare class PygameRenderer {
563
- private config;
564
- private process;
565
- private tempDir;
566
- private screenDir;
567
- constructor(config?: PygameConfig);
568
- renderScreenshot(imageBuffer: Buffer): Promise<void>;
569
- renderDoom(): Promise<void>;
570
- private runScript;
571
- close(): void;
572
- }
573
- export declare function createRenderer(config?: PygameConfig): PygameRenderer;
574
- export interface SitemapUrl {
575
- loc: string;
576
- lastmod?: string;
577
- changefreq?: string;
578
- priority?: number;
579
- }
580
- export interface SitemapResult {
581
- urls: SitemapUrl[];
582
- sitemaps: string[];
583
- duration: number;
584
- }
585
- export declare function fetchSitemap(url: string, options?: {
586
- timeout?: number;
587
- headers?: Record<string, string>;
588
- fetcher?: typeof fetch;
589
- }): Promise<SitemapResult>;
590
- export declare function discoverSitemaps(siteUrl: string): Promise<string[]>;
591
- export declare function parseSitemap(url: string, options?: {
592
- timeout?: number;
593
- headers?: Record<string, string>;
594
- fetcher?: typeof fetch;
595
- followIndexes?: boolean;
596
- maxUrls?: number;
597
- maxDepth?: number;
598
- }): Promise<SitemapUrl[]>;
599
- export interface AgentFormatOptions {
600
- includeSummary?: boolean;
601
- includeKeyPoints?: boolean;
602
- includeUrls?: boolean;
603
- includeRaw?: boolean;
604
- maxTokens?: number;
605
- chunkSize?: number;
606
- model?: 'gpt-4o' | 'gpt-4' | 'gpt-3.5-turbo' | 'claude' | 'gemini' | 'default';
607
- }
608
- export declare function formatForAgent(result: ScrapeResult, options?: AgentFormatOptions): AgentOutput;
609
- export declare function buildContext(result: ScrapeResult): string;
610
- export interface LlmsTxtOptions {
611
- siteName?: string;
612
- description?: string;
613
- includeOptional?: boolean;
614
- }
615
- export declare function generateLlmsTxt(results: ScrapeResult[], options?: LlmsTxtOptions): string;
616
- export declare function generateLlmsFullTxt(results: ScrapeResult[]): string;
617
- export interface FetchResult {
618
- html: string;
619
- url: string;
620
- status: number;
621
- headers: Record<string, string>;
622
- duration: number;
623
- }
624
- export declare function fetchHtml(url: string, options?: {
625
- timeout?: number;
626
- headers?: Record<string, string>;
627
- userAgent?: string;
628
- proxy?: string;
629
- signal?: AbortSignal;
630
- }): Promise<FetchResult>;
631
- export declare function fetchAndParse(url: string, options?: Partial<ScrapeOptions>): Promise<FetchResult>;
632
- export declare function detectRenderingMode(html: string): Promise<'static' | 'spa' | 'hydrated'>;
633
- export interface BatchResult {
634
- results: ScrapeResult[];
635
- errors: {
636
- url: string;
637
- error: Error;
638
- }[];
639
- successful: number;
640
- failed: number;
641
- duration: number;
642
- }
643
- export declare function batchScrape(options: BatchOptions, scrapeOpts?: ScrapeOptions): Promise<BatchResult>;
644
- export declare function batchScrapeSequential(urls: string[], options?: ScrapeOptions, callbacks?: {
645
- onResult?: (result: ScrapeResult, index: number) => void;
646
- onError?: (url: string, error: Error, index: number) => void;
647
- delayMs?: number;
648
- }): Promise<BatchResult>;
649
- export declare class AgentBrowser {
650
- private browser;
651
- private context;
652
- private page;
653
- private config;
654
- private static DEFAULTS;
655
- constructor(config?: Partial<BrowserAgentConfig>);
656
- launch(browserType?: 'chromium' | 'firefox' | 'webkit'): Promise<void>;
657
- navigate(url: string, waitUntil?: 'load' | 'domcontentloaded' | 'networkidle'): Promise<void>;
658
- screenshot(opts?: RenderOptions): Promise<Buffer>;
659
- evaluate<T = unknown>(fn: string | (() => T), args?: unknown[]): Promise<T>;
660
- click(selector: string): Promise<void>;
661
- type(selector: string, text: string, delayMs?: number): Promise<void>;
662
- scrollToBottom(step?: number, delayMs?: number, maxScrolls?: number): Promise<number>;
663
- scrollTo(x: number, y: number): Promise<void>;
664
- waitFor(selector: string, timeout?: number): Promise<void>;
665
- waitForLoad(): Promise<void>;
666
- html(): Promise<string>;
667
- text(): Promise<string>;
668
- title(): Promise<string>;
669
- url(): Promise<string>;
670
- executeCommands(commands: ChromeCommand[]): Promise<unknown[]>;
671
- close(): Promise<void>;
672
- isConnected(): boolean;
673
- }
674
- export declare function createBrowser(config?: BrowserAgentConfig): AgentBrowser;
675
- export declare function scrapeUrl(url: string, options?: ScrapeOptions): Promise<ScrapeResult>;
676
- export declare function scrapeHtml(html: string, options?: ScrapeOptions): Promise<ScrapeResult>;
677
- export declare function scrapeWithBrowser(browser: AgentBrowser, url: string, options?: ScrapeOptions): Promise<ScrapeResult>;
678
- export interface CrawlOptions extends ScrapeOptions {
679
- maxDepth?: number;
680
- maxPages?: number;
681
- maxConcurrent?: number;
682
- sameDomain?: boolean;
683
- delayMs?: number;
684
- onDiscover?: (url: string, depth: number) => void;
685
- onResult?: (result: ScrapeResult) => void;
686
- onError?: (url: string, error: Error) => void;
687
- }
688
- export declare function legacycrawl(startUrl: string, options?: CrawlOptions): Promise<{
689
- results: ScrapeResult[];
690
- stats: CrawlStats;
691
- }>;
692
- export interface ServerConfig {
693
- port?: number;
694
- host?: string;
695
- apiKey?: string;
696
- }
697
- /**
698
- * Creates the self-hosted scrape API surface. The factory became async with
699
- * the grand merge: the hono application is built on first call and the port
700
- * draw keeps using the process-wide random port helper.
701
- */
702
- export declare function createServer(config?: ServerConfig): Promise<{
703
- fetch: any;
704
- port: number;
705
- host: string;
706
- }>;
707
- /**
708
- * Runs the webscrape CLI. The former top-level commander construction of
709
- * scrape/cli.ts became this exported factory in the grand merge: commander
710
- * is imported on first call and loading the module never requires it.
711
- */
712
- export declare function runscrapecli(): Promise<void>;
713
- /**
714
- * Starts the local scrape API dev server. The former top-level bootstrap
715
- * of scrape/dev-server.ts became this exported factory in the grand merge
716
- * (a merged module must never bind a port as an import side effect).
717
- */
718
- export declare function startdevserver(): import("node:http").Server<typeof import("node:http").IncomingMessage, typeof import("node:http").ServerResponse>;
719
- export {};
720
- //# sourceMappingURL=webscrape.d.ts.map