firecrawl 4.39.0 → 4.40.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.
package/README.md CHANGED
@@ -386,3 +386,49 @@ The Firecrawl Node SDK is licensed under the MIT License. This means you are fre
386
386
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
387
387
 
388
388
  Please note that while this SDK is MIT licensed, it is part of a larger project which may be under different licensing terms. Always refer to the license information in the root directory of the main project for overall licensing details.
389
+
390
+ ### Alexandria
391
+
392
+ With a matching API deployment, Search returns complete tool contracts in `tools`.
393
+ `domainTools: true` adds domain matches to that same array. Find Tools walks the catalogue
394
+ without executing the tools it returns.
395
+
396
+ ```ts
397
+ const results = await firecrawl.search("podcast conversations about AI agents", {
398
+ sources: ["web", "alexandria"],
399
+ domainTools: true,
400
+ limit: 2,
401
+ });
402
+ console.log(results.tools?.[0].options);
403
+
404
+ const catalogue = await firecrawl.findTools({ providers: ["particle"], limit: 2 });
405
+ const next = catalogue.items[0]?.next;
406
+ if (next) console.log(await firecrawl.scrape({ alexandria: next }));
407
+ ```
408
+
409
+ Execute a selected contract with `scrape({ alexandria, requestId })`, where `alexandria`
410
+ is one `{ provider, capability, options }` call or an array of up to ten calls:
411
+
412
+ ```ts
413
+ const requestId = crypto.randomUUID();
414
+ const result = await firecrawl.scrape({
415
+ alexandria: {
416
+ provider: "particle",
417
+ capability: "podcasts/episodes/search",
418
+ options: { semantic_search: "AI agents" },
419
+ },
420
+ requestId,
421
+ });
422
+ for (const item of result.alexandria) {
423
+ if (item.error) console.error(item.error.code, item.error.message);
424
+ else console.log(item.data);
425
+ }
426
+ ```
427
+
428
+ Check each returned `alexandria` item's `error` before using its `data`. The result and
429
+ execution errors expose `requestId`; reuse it with the identical payload for a retry.
430
+ Automatic retries retain the same ID. Find Tools costs zero credits; provider execution
431
+ uses its published price. A provider whose data terms have not been accepted rejects the
432
+ call with a 403 whose `SdkError` carries `code: "THIRD_PARTY_DATA_TERMS_REQUIRED"` and a
433
+ `requiresAction: { type: "accept_terms", terms, version, url }` pointing at the page where
434
+ an organization admin can accept them.
@@ -12,7 +12,7 @@ var require_package = __commonJS({
12
12
  "package.json"(exports, module) {
13
13
  module.exports = {
14
14
  name: "@mendable/firecrawl-js",
15
- version: "4.39.0",
15
+ version: "4.40.0",
16
16
  description: "JavaScript SDK for the Firecrawl API: web scraping, crawling, web search, and scientific literature search over a research paper index of PubMed, bioRxiv, medRxiv and arXiv abstracts",
17
17
  main: "dist/index.js",
18
18
  types: "dist/index.d.ts",
package/dist/index.cjs CHANGED
@@ -39,7 +39,7 @@ var require_package = __commonJS({
39
39
  "package.json"(exports2, module2) {
40
40
  module2.exports = {
41
41
  name: "@mendable/firecrawl-js",
42
- version: "4.39.0",
42
+ version: "4.40.0",
43
43
  description: "JavaScript SDK for the Firecrawl API: web scraping, crawling, web search, and scientific literature search over a research paper index of PubMed, bioRxiv, medRxiv and arXiv abstracts",
44
44
  main: "dist/index.js",
45
45
  types: "dist/index.d.ts",
@@ -129,7 +129,8 @@ __export(index_exports, {
129
129
  ResearchClient: () => ResearchClient,
130
130
  SdkError: () => SdkError,
131
131
  Watcher: () => Watcher,
132
- default: () => index_default
132
+ default: () => index_default,
133
+ parseRequiresAction: () => parseRequiresAction
133
134
  });
134
135
  module.exports = __toCommonJS(index_exports);
135
136
 
@@ -269,18 +270,35 @@ var HttpClient = class {
269
270
  };
270
271
 
271
272
  // src/v2/types.ts
273
+ function parseRequiresAction(value) {
274
+ if (!value || typeof value !== "object") return void 0;
275
+ const record = value;
276
+ if (typeof record.type !== "string") return void 0;
277
+ const action = { type: record.type };
278
+ if (typeof record.terms === "string") action.terms = record.terms;
279
+ if (typeof record.version === "string") action.version = record.version;
280
+ if (typeof record.url === "string") action.url = record.url;
281
+ return action;
282
+ }
272
283
  var SdkError = class extends Error {
284
+ requestId;
273
285
  status;
274
286
  code;
275
287
  details;
276
288
  jobId;
277
- constructor(message, status, code, details, jobId) {
289
+ /** Present on exchange-mediated scrape failures that already captured credits. */
290
+ chargeId;
291
+ /** Present when the API needs an out-of-band step first, such as accepting provider terms. */
292
+ requiresAction;
293
+ constructor(message, status, code, details, jobId, chargeId, requiresAction) {
278
294
  super(message);
279
295
  this.name = "FirecrawlSdkError";
280
296
  this.status = status;
281
297
  this.code = code;
282
298
  this.details = details;
283
299
  this.jobId = jobId;
300
+ this.chargeId = chargeId;
301
+ this.requiresAction = requiresAction;
284
302
  }
285
303
  };
286
304
  var JobTimeoutError = class extends SdkError {
@@ -532,14 +550,30 @@ function throwForBadResponse(resp, action) {
532
550
  const status = resp.status;
533
551
  const body = resp.data || {};
534
552
  const msg = body?.error || body?.message || `Request failed (${status}) while trying to ${action}`;
535
- throw new SdkError(msg, status, void 0, body?.details);
553
+ throw new SdkError(
554
+ msg,
555
+ status,
556
+ body?.code,
557
+ body?.details,
558
+ void 0,
559
+ body?.chargeId,
560
+ parseRequiresAction(body?.requiresAction)
561
+ );
536
562
  }
537
563
  function normalizeAxiosError(err, action) {
538
564
  const status = err.response?.status;
539
565
  const body = err.response?.data;
540
566
  const message = body?.error || err.message || `Request failed${status ? ` (${status})` : ""} while trying to ${action}`;
541
567
  const code = body?.code || err.code;
542
- throw new SdkError(message, status, code, body?.details ?? body);
568
+ throw new SdkError(
569
+ message,
570
+ status,
571
+ code,
572
+ body?.details ?? body,
573
+ void 0,
574
+ body?.chargeId,
575
+ parseRequiresAction(body?.requiresAction)
576
+ );
543
577
  }
544
578
  function isRetryableError(err) {
545
579
  if (err instanceof JobTimeoutError) {
@@ -585,9 +619,10 @@ async function scrape(http, url, options, deps = {}) {
585
619
  throw new Error("URL cannot be empty");
586
620
  }
587
621
  if (options) ensureValidScrapeOptions(options);
588
- const { autoResume, ...requestOptions } = options ?? {};
622
+ const { autoResume, domainTools, ...requestOptions } = options ?? {};
589
623
  const payload = { url: url.trim() };
590
624
  Object.assign(payload, requestOptions);
625
+ if (domainTools) payload.domainTools = domainTools;
591
626
  const requestTimeout = autoResume === false ? typeof options?.timeout === "number" ? { timeoutMs: options.timeout + 5e3 } : {} : {
592
627
  timeoutMs: Math.max(
593
628
  typeof options?.timeout === "number" ? options.timeout : 3e5,
@@ -744,6 +779,7 @@ function prepareSearchPayload(req) {
744
779
  const payload = {
745
780
  query: req.query
746
781
  };
782
+ if (req.domainTools != null) payload.domainTools = req.domainTools;
747
783
  if (req.sources) payload.sources = req.sources;
748
784
  if (req.categories) payload.categories = req.categories;
749
785
  if (req.includeDomains) payload.includeDomains = req.includeDomains;
@@ -796,10 +832,12 @@ async function search(http, request) {
796
832
  }
797
833
  const data = res.data.data || {};
798
834
  const out = {};
835
+ if (res.data.warning) out.warning = res.data.warning;
799
836
  if (data.web) out.web = transformArray(data.web);
800
837
  if (data.news) out.news = transformArray(data.news);
801
838
  if (data.images)
802
839
  out.images = transformArray(data.images);
840
+ if (data.tools) out.tools = data.tools;
803
841
  Object.defineProperty(out, "data", {
804
842
  get() {
805
843
  const parts = [];
@@ -807,7 +845,9 @@ async function search(http, request) {
807
845
  if (out.news?.length) parts.push(`.news (${out.news.length} results)`);
808
846
  if (out.images?.length)
809
847
  parts.push(`.images (${out.images.length} results)`);
810
- const available = parts.length ? parts.join(", ") : ".web, .news, or .images";
848
+ if (out.tools?.length)
849
+ parts.push(`.tools (${out.tools.length} results)`);
850
+ const available = parts.length ? parts.join(", ") : ".web, .news, .images, or .tools";
811
851
  throw new Error(
812
852
  `SearchData has no '.data'. Results are grouped by source: ${available}`
813
853
  );
@@ -822,6 +862,101 @@ async function search(http, request) {
822
862
  }
823
863
  }
824
864
 
865
+ // src/v2/methods/tools.ts
866
+ var ALEXANDRIA_MAX_CALLS = 10;
867
+ function prepareAlexandriaPayload(calls, opts) {
868
+ if (!Array.isArray(calls) || calls.length === 0) {
869
+ throw new Error("alexandria requires at least one call");
870
+ }
871
+ if (calls.length > ALEXANDRIA_MAX_CALLS) {
872
+ throw new Error(`alexandria accepts at most ${ALEXANDRIA_MAX_CALLS} calls`);
873
+ }
874
+ const alexandria = calls.map((call, index) => {
875
+ if (!call || typeof call.provider !== "string" || !call.provider.trim()) {
876
+ throw new Error(`alexandria[${index}].provider cannot be empty`);
877
+ }
878
+ if (typeof call.capability !== "string" || !call.capability.trim()) {
879
+ throw new Error(`alexandria[${index}].capability cannot be empty`);
880
+ }
881
+ if (Object.keys(call).some(
882
+ (key) => !["provider", "capability", "options"].includes(key)
883
+ ))
884
+ throw new Error("Unknown alexandria call option");
885
+ const item = {
886
+ provider: call.provider.trim(),
887
+ capability: call.capability.trim()
888
+ };
889
+ if (call.options != null) {
890
+ if (typeof call.options !== "object" || Array.isArray(call.options)) {
891
+ throw new Error(`alexandria[${index}].options must be an object`);
892
+ }
893
+ item.options = call.options;
894
+ }
895
+ return item;
896
+ });
897
+ if (opts.timeout != null && (!Number.isInteger(opts.timeout) || opts.timeout <= 0)) {
898
+ throw new Error("timeout must be a positive integer");
899
+ }
900
+ const payload = { alexandria };
901
+ if (opts.timeout != null) payload.timeout = opts.timeout;
902
+ if (opts.integration && opts.integration.trim())
903
+ payload.integration = opts.integration.trim();
904
+ if (opts.origin) payload.origin = opts.origin;
905
+ return payload;
906
+ }
907
+ async function scrapeAlexandria(http, calls, opts = {}) {
908
+ const payload = prepareAlexandriaPayload(calls, opts);
909
+ const requestId = opts.requestId ?? crypto.randomUUID();
910
+ if (!/^[A-Za-z0-9._:-]{1,128}$/.test(requestId))
911
+ throw new Error("Invalid requestId");
912
+ try {
913
+ const res = await http.post("/v2/scrape", payload, {
914
+ headers: { "x-request-id": requestId },
915
+ // Allow response delivery after the API's capped execution deadline.
916
+ timeoutMs: Math.min(opts.timeout ?? 5e4, 5e4) + 3e4
917
+ });
918
+ if (res.status !== 200 || !res.data?.success) {
919
+ throwForBadResponse(res, "alexandria");
920
+ }
921
+ const data = res.data.data;
922
+ if (!data || !Array.isArray(data.alexandria) || typeof data.creditsCost !== "number" || !Number.isInteger(data.creditsCost) || data.creditsCost < 0) {
923
+ throw new SdkError("Invalid alexandria response");
924
+ }
925
+ return {
926
+ scrapeId: res.data.scrape_id ?? "",
927
+ requestId,
928
+ alexandria: data.alexandria,
929
+ creditsCost: data.creditsCost
930
+ };
931
+ } catch (err) {
932
+ try {
933
+ if (err?.isAxiosError) normalizeAxiosError(err, "alexandria");
934
+ throw err;
935
+ } catch (error) {
936
+ if (error && typeof error === "object")
937
+ Object.assign(error, { requestId });
938
+ throw error;
939
+ }
940
+ }
941
+ }
942
+ async function findTools(http, options = {}) {
943
+ const result = await scrapeAlexandria(http, [
944
+ {
945
+ provider: "firecrawl",
946
+ capability: "find-tools",
947
+ options: { ...options }
948
+ }
949
+ ]);
950
+ const item = result.alexandria[0];
951
+ if (!item) throw new SdkError("Missing Find Tools result");
952
+ if (item.error)
953
+ throw Object.assign(
954
+ new SdkError(item.error.message, item.error.status, item.error.code),
955
+ { requestId: result.requestId }
956
+ );
957
+ return item.data;
958
+ }
959
+
825
960
  // src/v2/methods/developer.ts
826
961
  var ENDPOINT = "/v2/search/developer";
827
962
  async function developerSearch(http, query, options = {}) {
@@ -2149,7 +2284,28 @@ var FirecrawlClient = class {
2149
2284
  });
2150
2285
  }
2151
2286
  async scrape(url, options) {
2152
- return scrape(this.http, url, options);
2287
+ if (typeof url === "string") return scrape(this.http, url, options);
2288
+ if (!url || options !== void 0 || Object.keys(url).some(
2289
+ (key) => ![
2290
+ "alexandria",
2291
+ "requestId",
2292
+ "timeout",
2293
+ "integration",
2294
+ "origin"
2295
+ ].includes(key)
2296
+ )) {
2297
+ throw new Error("Provide an alexandria request without URL scrape options");
2298
+ }
2299
+ const { alexandria, ...opts } = url;
2300
+ return scrapeAlexandria(
2301
+ this.http,
2302
+ Array.isArray(alexandria) ? alexandria : [alexandria],
2303
+ opts
2304
+ );
2305
+ }
2306
+ /** Explore the catalogue without executing the tools it returns. */
2307
+ async findTools(options) {
2308
+ return findTools(this.http, options);
2153
2309
  }
2154
2310
  /**
2155
2311
  * Interact with the browser session associated with a scrape job.
@@ -4041,5 +4197,6 @@ var index_default = Firecrawl;
4041
4197
  JobTimeoutError,
4042
4198
  ResearchClient,
4043
4199
  SdkError,
4044
- Watcher
4200
+ Watcher,
4201
+ parseRequiresAction
4045
4202
  });
package/dist/index.d.cts CHANGED
@@ -200,6 +200,8 @@ interface ScrapeOptions {
200
200
  };
201
201
  integration?: string;
202
202
  origin?: string;
203
+ /** Include domain-matched Alexandria contracts for this URL in `tools`. Default off. */
204
+ domainTools?: boolean;
203
205
  }
204
206
  type RedactPIIEntity = "PERSON" | "EMAIL" | "PHONE" | "LOCATION" | "FINANCIAL" | "SECRET";
205
207
  interface RedactPIIOptions {
@@ -549,6 +551,8 @@ interface Document {
549
551
  pages?: PdfPage[];
550
552
  /** Typed PDF layout blocks, present only when `parsers[].blocks` is true. */
551
553
  blocks?: PdfPageBlocks[];
554
+ /** Present when `domainTools` discovered contracts matching this URL. */
555
+ tools?: DiscoveredTool[];
552
556
  }
553
557
  interface PaginationConfig {
554
558
  /** When true (default), automatically follow `next` links and aggregate all documents. */
@@ -650,9 +654,121 @@ interface SearchResultImages {
650
654
  position?: number;
651
655
  }
652
656
  interface SearchData {
657
+ warning?: string;
653
658
  web?: Array<SearchResultWeb | Document>;
654
659
  news?: Array<SearchResultNews | Document>;
655
660
  images?: Array<SearchResultImages | Document>;
661
+ tools?: DiscoveredTool[];
662
+ }
663
+ /** A complete tool contract returned by semantic or contextual discovery. */
664
+ interface DiscoveredTool {
665
+ id?: string;
666
+ provider: string;
667
+ capability: string;
668
+ name: string;
669
+ description: string;
670
+ creditsCost: number;
671
+ perRecord: boolean;
672
+ options: Array<{
673
+ name: string;
674
+ type: string;
675
+ required?: boolean;
676
+ [key: string]: unknown;
677
+ }>;
678
+ requiresOneOf?: string[][];
679
+ response?: {
680
+ about?: string;
681
+ key?: string;
682
+ fields?: Array<{
683
+ name: string;
684
+ type: string;
685
+ [key: string]: unknown;
686
+ }>;
687
+ [key: string]: unknown;
688
+ };
689
+ examples?: Partial<Record<"javascript" | "python" | "curl", string>> & Record<string, string>;
690
+ example?: {
691
+ recordedAt: string;
692
+ request: Record<string, unknown>;
693
+ response: unknown;
694
+ };
695
+ label?: string;
696
+ whenToUse?: string;
697
+ returns?: unknown;
698
+ discovery?: unknown;
699
+ attribution?: unknown;
700
+ matchedBy?: Array<"semantic" | "domain">;
701
+ matchedUrls?: string[];
702
+ concept?: string;
703
+ cohorts?: string[];
704
+ similarity?: number;
705
+ }
706
+ interface FindToolsOptions {
707
+ urls?: string[];
708
+ providers?: string[];
709
+ categories?: string[];
710
+ groups?: string[];
711
+ capabilities?: string[];
712
+ level?: "providers" | "groups" | "tools";
713
+ expand?: Array<"options" | "response" | "examples">;
714
+ limit?: number;
715
+ offset?: number;
716
+ }
717
+ interface FindToolsData {
718
+ level: "providers" | "groups" | "tools";
719
+ items: Array<{
720
+ id: string;
721
+ name: string;
722
+ next?: AlexandriaCall;
723
+ execute?: Pick<AlexandriaCall, "provider" | "capability">;
724
+ [key: string]: unknown;
725
+ }>;
726
+ total: number;
727
+ next: AlexandriaCall | null;
728
+ }
729
+ interface AlexandriaScrapeRequest extends AlexandriaOptions {
730
+ alexandria: AlexandriaCall | AlexandriaCall[];
731
+ }
732
+ interface AlexandriaCall {
733
+ provider: string;
734
+ capability: string;
735
+ options?: Record<string, unknown>;
736
+ }
737
+ interface AlexandriaScrapeError {
738
+ code: string;
739
+ message: string;
740
+ status?: number;
741
+ /** Present when credits were captured before the failure. */
742
+ chargeId?: string;
743
+ }
744
+ type AlexandriaScrapeResult = {
745
+ provider: string;
746
+ capability: string;
747
+ creditsCost: number;
748
+ data: unknown;
749
+ records?: number;
750
+ upstreamStatus?: number;
751
+ recordedAt?: string;
752
+ error?: undefined;
753
+ [key: string]: unknown;
754
+ } | {
755
+ provider?: string;
756
+ capability?: string;
757
+ error: AlexandriaScrapeError;
758
+ [key: string]: unknown;
759
+ };
760
+ interface AlexandriaScrapeData {
761
+ scrapeId: string;
762
+ requestId: string;
763
+ alexandria: AlexandriaScrapeResult[];
764
+ creditsCost: number;
765
+ }
766
+ interface AlexandriaOptions {
767
+ /** Reuse this ID with the identical payload when retrying an execution. */
768
+ requestId?: string;
769
+ timeout?: number;
770
+ integration?: string;
771
+ origin?: string;
656
772
  }
657
773
  /**
658
774
  * Narrows ordinary **web search**. A category does not switch `search()` to a
@@ -681,8 +797,10 @@ interface CategoryOption {
681
797
  }
682
798
  interface SearchRequest {
683
799
  query: string;
684
- sources?: Array<"web" | "news" | "images" | {
685
- type: "web" | "news" | "images";
800
+ /** Include domain-matched contracts in tools alongside semantic matches. */
801
+ domainTools?: boolean;
802
+ sources?: Array<"web" | "news" | "images" | "alexandria" | {
803
+ type: "web" | "news" | "images" | "alexandria";
686
804
  }>;
687
805
  /**
688
806
  * Narrow web search by category. See {@link CategoryOption}.
@@ -1441,12 +1559,25 @@ interface ErrorDetails {
1441
1559
  details?: Record<string, unknown>;
1442
1560
  status?: number;
1443
1561
  }
1562
+ /** An out-of-band step the API requires before the request can succeed. */
1563
+ interface RequiresAction {
1564
+ type: "accept_terms" | (string & {});
1565
+ terms?: string;
1566
+ version?: string;
1567
+ url?: string;
1568
+ }
1569
+ declare function parseRequiresAction(value: unknown): RequiresAction | undefined;
1444
1570
  declare class SdkError extends Error {
1571
+ requestId?: string;
1445
1572
  status?: number;
1446
1573
  code?: string;
1447
1574
  details?: unknown;
1448
1575
  jobId?: string;
1449
- constructor(message: string, status?: number, code?: string, details?: unknown, jobId?: string);
1576
+ /** Present on exchange-mediated scrape failures that already captured credits. */
1577
+ chargeId?: string;
1578
+ /** Present when the API needs an out-of-band step first, such as accepting provider terms. */
1579
+ requiresAction?: RequiresAction;
1580
+ constructor(message: string, status?: number, code?: string, details?: unknown, jobId?: string, chargeId?: string, requiresAction?: RequiresAction);
1450
1581
  }
1451
1582
  declare class JobTimeoutError extends SdkError {
1452
1583
  timeoutSeconds: number;
@@ -1972,6 +2103,9 @@ declare class FirecrawlClient {
1972
2103
  json?: InferredJsonFromOptions<Opts>;
1973
2104
  }>;
1974
2105
  scrape(url: string, options?: ScrapeCallOptions): Promise<Document>;
2106
+ scrape(request: AlexandriaScrapeRequest): Promise<AlexandriaScrapeData>;
2107
+ /** Explore the catalogue without executing the tools it returns. */
2108
+ findTools(options?: FindToolsOptions): Promise<FindToolsData>;
1975
2109
  /**
1976
2110
  * Interact with the browser session associated with a scrape job.
1977
2111
  * @param jobId Scrape job id.
@@ -3255,4 +3389,4 @@ declare class Firecrawl extends FirecrawlClient {
3255
3389
  get v1(): FirecrawlApp;
3256
3390
  }
3257
3391
 
3258
- export { type ActionOption, type ActiveCrawl, type ActiveCrawlsResponse, type AgentEffort, type AgentExchangeOptions, type AgentExchangeSummary, type AgentListItem, type AgentListOptions, type AgentListResponse, type AgentMode, type AgentOptions$1 as AgentOptions, type AgentResponse, type AgentSnapshotResponse, type AgentStatusResponse, type AgentSuggestion, type AgentThread, type AgentThreadResponse, type AgentThreadRun, type AgentTraceActiveBrowserSession, type AgentTraceAgentFinishedEvent, type AgentTraceAgentIdentity, type AgentTraceAgentRole, type AgentTraceAgentStartedEvent, type AgentTraceArtifactChange, type AgentTraceArtifactUpdatedEvent, type AgentTraceBrowserSessionFinishedEvent, type AgentTraceBrowserSessionStartedEvent, type AgentTraceError, type AgentTraceErrorOccurredEvent, type AgentTraceEvent, type AgentTraceProgressReportedEvent, type AgentTraceReasoningSummaryEvent, type AgentTraceResponse, type AgentTraceRunCancelRequestedEvent, type AgentTraceRunFinishedEvent, type AgentTraceRunStartedEvent, type AgentTraceToolCallFinishedEvent, type AgentTraceToolCallStartedEvent, type AgentWebhookConfig, type AgentWebhookEvent, type AttributesFormat, type AuditMetadata$1 as AuditMetadata, type BatchScrapeJob, type BatchScrapeOptions, type BatchScrapeResponse$1 as BatchScrapeResponse, type BrandingProfile, type BrowserCreateResponse, type BrowserDeleteResponse, type BrowserExecuteResponse, type BrowserListResponse, type BrowserSession, type CategoryOption, type ChangeTrackingFormat, type ClickAction, type ConcurrencyCheck, type CrawlErrorsResponse$1 as CrawlErrorsResponse, type CrawlJob, type CrawlOptions, type CrawlResponse$1 as CrawlResponse, type CreateMonitorRequest, type CreditUsage, type CreditUsageHistoricalPeriod, type CreditUsageHistoricalResponse, type DeveloperSearchLicenseDisclosure, type DeveloperSearchOptions, type DeveloperSearchPassage, type DeveloperSearchRepoStatus, type DeveloperSearchResponse, type DeveloperSearchResult, type DeveloperSearchSourceStatus, type DeveloperSearchType, type Document, type DocumentMetadata, type EndpointFeedbackEndpoint, type EndpointFeedbackRequest, type ErrorDetails, type ExecuteJavascriptAction, type ExtractResponse$1 as ExtractResponse, type FeedbackMissingContent, type FeedbackRating, type FeedbackResponse, type FeedbackValuableSource, Firecrawl, FirecrawlApp as FirecrawlAppV1, FirecrawlClient, type FirecrawlClientInput, type FirecrawlClientOptions, type Format, type FormatOption, type FormatString, type GetMonitorCheckOptions, type GetPaperOptions, type GitHubScoreBreakdown, type GitHubSearchItem, type GitHubSearchResponse, type HighlightsFormat, type IdMap, JobTimeoutError, type JsonFormat, type ListMonitorChecksOptions, type ListMonitorsOptions, type LocationConfig$1 as LocationConfig, type MapData, type MapOptions, type MenuAvailability, type MenuImage, type MenuItem, type MenuItemIdentifiers, type MenuMerchant, type MenuPrice, type MenuProfile, type MenuSection, type Monitor, type MonitorCheck, type MonitorCheckDetail, type MonitorCheckPage, type MonitorCrawlTarget, type MonitorCrawlTargetResult, type MonitorEmailNotification, type MonitorEmailRecipientSubscription, type MonitorJsonFieldDiff, type MonitorNotification, type MonitorPageDiff, type MonitorPageJudgment, type MonitorPageSnapshot, type MonitorSchedule, type MonitorScrapeTarget, type MonitorScrapeTargetResult, type MonitorSearchTarget, type MonitorSearchTargetResult, type MonitorSummary, type MonitorTarget, type MonitorTargetResult, type MonitorWebhookConfig, type PDFAction, type PDFParser, type PaginationConfig, type PaperMetadata, type PaperMetadataResponse, type PaperResult, type PaperSignals, type ParseFile, type ParseFileData, type ParseFormat, type ParseFormatOption, type ParseFormatString, type ParseOptions, type Passage, type PdfBlockConfidence, type PdfBlockItem, type PdfPage, type PdfPageBlocks, type PendingApproval, type PressAction, type ProductAvailability, type ProductImage, type ProductPrice, type ProductProfile, type ProductSale, type ProductVariant, type QueryFormat, type QuestionFormat, type QueueStatusResponse$1 as QueueStatusResponse, type ReadPaperResponse, type RedactPIIEntity, type RedactPIIOptions, ResearchClient, type ScrapeAction, type ScrapeBrowserDeleteResponse, type ScrapeExecuteRequest, type ScrapeExecuteResponse, type ScrapeOptions, type ScreenshotAction, type ScreenshotFormat, type ScrollAction, SdkError, type SearchData, type SearchFeedbackRequest, type SearchGithubOptions, type SearchPapersOptions, type SearchPapersResponse, type SearchRequest, type SearchResultImages, type SearchResultNews, type SearchResultWeb, type SimilarPapersOptions, type SimilarPapersResponse, type ThreatProtectionOptions, type TokenUsage, type TokenUsageHistoricalPeriod, type TokenUsageHistoricalResponse, type UpdateMonitorRequest, type Viewport, type WaitAction, Watcher, type WatcherOptions, type WebhookConfig, type WriteAction, Firecrawl as default };
3392
+ export { type ActionOption, type ActiveCrawl, type ActiveCrawlsResponse, type AgentEffort, type AgentExchangeOptions, type AgentExchangeSummary, type AgentListItem, type AgentListOptions, type AgentListResponse, type AgentMode, type AgentOptions$1 as AgentOptions, type AgentResponse, type AgentSnapshotResponse, type AgentStatusResponse, type AgentSuggestion, type AgentThread, type AgentThreadResponse, type AgentThreadRun, type AgentTraceActiveBrowserSession, type AgentTraceAgentFinishedEvent, type AgentTraceAgentIdentity, type AgentTraceAgentRole, type AgentTraceAgentStartedEvent, type AgentTraceArtifactChange, type AgentTraceArtifactUpdatedEvent, type AgentTraceBrowserSessionFinishedEvent, type AgentTraceBrowserSessionStartedEvent, type AgentTraceError, type AgentTraceErrorOccurredEvent, type AgentTraceEvent, type AgentTraceProgressReportedEvent, type AgentTraceReasoningSummaryEvent, type AgentTraceResponse, type AgentTraceRunCancelRequestedEvent, type AgentTraceRunFinishedEvent, type AgentTraceRunStartedEvent, type AgentTraceToolCallFinishedEvent, type AgentTraceToolCallStartedEvent, type AgentWebhookConfig, type AgentWebhookEvent, type AlexandriaCall, type AlexandriaOptions, type AlexandriaScrapeData, type AlexandriaScrapeError, type AlexandriaScrapeRequest, type AlexandriaScrapeResult, type AttributesFormat, type AuditMetadata$1 as AuditMetadata, type BatchScrapeJob, type BatchScrapeOptions, type BatchScrapeResponse$1 as BatchScrapeResponse, type BrandingProfile, type BrowserCreateResponse, type BrowserDeleteResponse, type BrowserExecuteResponse, type BrowserListResponse, type BrowserSession, type CategoryOption, type ChangeTrackingFormat, type ClickAction, type ConcurrencyCheck, type CrawlErrorsResponse$1 as CrawlErrorsResponse, type CrawlJob, type CrawlOptions, type CrawlResponse$1 as CrawlResponse, type CreateMonitorRequest, type CreditUsage, type CreditUsageHistoricalPeriod, type CreditUsageHistoricalResponse, type DeveloperSearchLicenseDisclosure, type DeveloperSearchOptions, type DeveloperSearchPassage, type DeveloperSearchRepoStatus, type DeveloperSearchResponse, type DeveloperSearchResult, type DeveloperSearchSourceStatus, type DeveloperSearchType, type DiscoveredTool, type Document, type DocumentMetadata, type EndpointFeedbackEndpoint, type EndpointFeedbackRequest, type ErrorDetails, type ExecuteJavascriptAction, type ExtractResponse$1 as ExtractResponse, type FeedbackMissingContent, type FeedbackRating, type FeedbackResponse, type FeedbackValuableSource, type FindToolsData, type FindToolsOptions, Firecrawl, FirecrawlApp as FirecrawlAppV1, FirecrawlClient, type FirecrawlClientInput, type FirecrawlClientOptions, type Format, type FormatOption, type FormatString, type GetMonitorCheckOptions, type GetPaperOptions, type GitHubScoreBreakdown, type GitHubSearchItem, type GitHubSearchResponse, type HighlightsFormat, type IdMap, JobTimeoutError, type JsonFormat, type ListMonitorChecksOptions, type ListMonitorsOptions, type LocationConfig$1 as LocationConfig, type MapData, type MapOptions, type MenuAvailability, type MenuImage, type MenuItem, type MenuItemIdentifiers, type MenuMerchant, type MenuPrice, type MenuProfile, type MenuSection, type Monitor, type MonitorCheck, type MonitorCheckDetail, type MonitorCheckPage, type MonitorCrawlTarget, type MonitorCrawlTargetResult, type MonitorEmailNotification, type MonitorEmailRecipientSubscription, type MonitorJsonFieldDiff, type MonitorNotification, type MonitorPageDiff, type MonitorPageJudgment, type MonitorPageSnapshot, type MonitorSchedule, type MonitorScrapeTarget, type MonitorScrapeTargetResult, type MonitorSearchTarget, type MonitorSearchTargetResult, type MonitorSummary, type MonitorTarget, type MonitorTargetResult, type MonitorWebhookConfig, type PDFAction, type PDFParser, type PaginationConfig, type PaperMetadata, type PaperMetadataResponse, type PaperResult, type PaperSignals, type ParseFile, type ParseFileData, type ParseFormat, type ParseFormatOption, type ParseFormatString, type ParseOptions, type Passage, type PdfBlockConfidence, type PdfBlockItem, type PdfPage, type PdfPageBlocks, type PendingApproval, type PressAction, type ProductAvailability, type ProductImage, type ProductPrice, type ProductProfile, type ProductSale, type ProductVariant, type QueryFormat, type QuestionFormat, type QueueStatusResponse$1 as QueueStatusResponse, type ReadPaperResponse, type RedactPIIEntity, type RedactPIIOptions, type RequiresAction, ResearchClient, type ScrapeAction, type ScrapeBrowserDeleteResponse, type ScrapeExecuteRequest, type ScrapeExecuteResponse, type ScrapeOptions, type ScreenshotAction, type ScreenshotFormat, type ScrollAction, SdkError, type SearchData, type SearchFeedbackRequest, type SearchGithubOptions, type SearchPapersOptions, type SearchPapersResponse, type SearchRequest, type SearchResultImages, type SearchResultNews, type SearchResultWeb, type SimilarPapersOptions, type SimilarPapersResponse, type ThreatProtectionOptions, type TokenUsage, type TokenUsageHistoricalPeriod, type TokenUsageHistoricalResponse, type UpdateMonitorRequest, type Viewport, type WaitAction, Watcher, type WatcherOptions, type WebhookConfig, type WriteAction, Firecrawl as default, parseRequiresAction };