@openclaw/firecrawl-plugin 2026.11.1 → 2026.11.3
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/dist/.setup/{firecrawl-client-Dk_bi5M_.mjs → firecrawl-client--j4MjwgU.mjs} +23 -29
- package/dist/.setup/{firecrawl-fetch-provider-EP1XFhDE.mjs → firecrawl-fetch-provider-Br32KRpR.mjs} +5 -3
- package/dist/.setup/{firecrawl-search-provider-Dg-_xx_m.mjs → firecrawl-search-provider-D_gyroLO.mjs} +3 -2
- package/dist/api.js +3 -2
- package/dist/index.js +9 -6
- package/dist/web-fetch-contract-api.js +2 -1
- package/dist/web-fetch-provider.js +2 -1
- package/dist/web-search-contract-api.js +2 -1
- package/dist/web-search-provider.js +2 -1
- package/package.json +4 -4
- package/dist/.source-module-urls/ad8205c790d921269d4ea28d22ab658579b9674fd00e025664fcf0b8ea32155c.json +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { resolveSiteName } from "openclaw/plugin-sdk/provider-web-search";
|
|
2
|
+
import { hash } from "node:crypto";
|
|
2
3
|
import { asNonNegativeFiniteNumber, asPositiveFiniteNumber, parseDateStringTimestampMs, parseFiniteNumber, resolveIntegerOption } from "openclaw/plugin-sdk/number-runtime";
|
|
3
4
|
import { ProviderHttpError, readProviderJsonObjectResponse } from "openclaw/plugin-sdk/provider-http";
|
|
4
5
|
import { DEFAULT_CACHE_TTL_MINUTES, markdownToText, normalizeCacheKey, readCache, readResponseText, resolveCacheTtlMs, resolvePositiveTimeoutSeconds, withSelfHostedWebToolsEndpoint, withStrictWebToolsEndpoint, writeCache } from "openclaw/plugin-sdk/provider-web-fetch";
|
|
@@ -7,7 +8,7 @@ import { truncateSanitizedExternalContent, wrapExternalContent, wrapWebContent }
|
|
|
7
8
|
import { SsrFBlockedError, isBlockedHostnameOrIp, isPrivateIpAddress, resolvePinnedHostnameWithPolicy } from "openclaw/plugin-sdk/ssrf-runtime";
|
|
8
9
|
import { asBoolean, asOptionalObjectRecord, asOptionalRecord, asRecord, normalizeOptionalString, readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
9
10
|
import { resolveReadOnlyEnvSecretRef } from "openclaw/plugin-sdk/secret-ref-readonly";
|
|
10
|
-
|
|
11
|
+
//#region \0rolldown/runtime.js
|
|
11
12
|
var __defProp = Object.defineProperty;
|
|
12
13
|
var __exportAll = (all, no_symbols) => {
|
|
13
14
|
let target = {};
|
|
@@ -39,29 +40,19 @@ function resolveConfiguredSecret(value, path, cfg) {
|
|
|
39
40
|
normalizeValue: normalizeSecretInput
|
|
40
41
|
});
|
|
41
42
|
}
|
|
42
|
-
function
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (resolved.status === "available") return resolved.value;
|
|
56
|
-
if (resolved.status === "blocked") blockedConfiguredSecret = true;
|
|
57
|
-
}
|
|
58
|
-
if (blockedConfiguredSecret) return;
|
|
59
|
-
return normalizeSecretInput(process.env[FIRECRAWL_API_KEY_ENV_VAR]) || void 0;
|
|
60
|
-
}
|
|
61
|
-
function resolveFirecrawlBaseUrl(cfg) {
|
|
62
|
-
const search = resolveFirecrawlSearchConfig(cfg);
|
|
63
|
-
const fetch = resolveFirecrawlFetchConfig(cfg);
|
|
64
|
-
return normalizeOptionalString(search?.baseUrl) || normalizeOptionalString(fetch?.baseUrl) || normalizeSecretInput(process.env.FIRECRAWL_BASE_URL) || "https://api.firecrawl.dev";
|
|
43
|
+
function resolveFirecrawlConnection(cfg, scope) {
|
|
44
|
+
const scopes = {
|
|
45
|
+
webSearch: resolveFirecrawlSearchConfig(cfg),
|
|
46
|
+
webFetch: resolveFirecrawlFetchConfig(cfg)
|
|
47
|
+
};
|
|
48
|
+
const primary = scopes[scope];
|
|
49
|
+
const selectedScope = primary?.apiKey === void 0 && !normalizeOptionalString(primary?.baseUrl) ? scope === "webSearch" ? "webFetch" : "webSearch" : scope;
|
|
50
|
+
const connection = scopes[selectedScope];
|
|
51
|
+
const resolved = resolveConfiguredSecret(connection?.apiKey, `plugins.entries.firecrawl.config.${selectedScope}.apiKey`, cfg);
|
|
52
|
+
return {
|
|
53
|
+
apiKey: resolved.status === "available" ? resolved.value : resolved.status === "blocked" ? void 0 : normalizeSecretInput(process.env[FIRECRAWL_API_KEY_ENV_VAR]) || void 0,
|
|
54
|
+
baseUrl: normalizeOptionalString(connection?.baseUrl) || normalizeSecretInput(process.env.FIRECRAWL_BASE_URL) || "https://api.firecrawl.dev"
|
|
55
|
+
};
|
|
65
56
|
}
|
|
66
57
|
function resolveFirecrawlOnlyMainContent(cfg, override) {
|
|
67
58
|
return asBoolean(override) ?? asBoolean(resolveFirecrawlFetchConfig(cfg)?.onlyMainContent) ?? true;
|
|
@@ -76,7 +67,8 @@ function resolveFirecrawlScrapeTimeoutSeconds(cfg, override) {
|
|
|
76
67
|
function resolveFirecrawlSearchTimeoutSeconds(override) {
|
|
77
68
|
return resolvePositiveTimeoutSeconds(override, DEFAULT_FIRECRAWL_SEARCH_TIMEOUT_SECONDS);
|
|
78
69
|
}
|
|
79
|
-
|
|
70
|
+
//#endregion
|
|
71
|
+
//#region extensions/firecrawl/src/firecrawl-client.ts
|
|
80
72
|
var firecrawl_client_exports = /* @__PURE__ */ __exportAll({
|
|
81
73
|
assertFirecrawlScrapeTargetAllowed: () => assertFirecrawlScrapeTargetAllowed,
|
|
82
74
|
parseFirecrawlScrapePayload: () => parseFirecrawlScrapePayload,
|
|
@@ -239,7 +231,8 @@ async function runFirecrawlSearch(params) {
|
|
|
239
231
|
params.signal?.throwIfAborted();
|
|
240
232
|
const keyless = params.access === "keyless";
|
|
241
233
|
const providerId = keyless ? "firecrawl-free" : "firecrawl";
|
|
242
|
-
const
|
|
234
|
+
const connection = resolveFirecrawlConnection(params.cfg, "webSearch");
|
|
235
|
+
const apiKey = keyless ? void 0 : connection.apiKey;
|
|
243
236
|
if (!apiKey && !keyless) throw new Error("web_search (firecrawl) needs a Firecrawl API key. Set FIRECRAWL_API_KEY in the Gateway environment, or configure plugins.entries.firecrawl.config.webSearch.apiKey.");
|
|
244
237
|
const count = resolveIntegerOption(params.count, DEFAULT_SEARCH_COUNT, {
|
|
245
238
|
min: 1,
|
|
@@ -255,10 +248,11 @@ async function runFirecrawlSearch(params) {
|
|
|
255
248
|
const tbs = normalizeOptionalString(params.tbs);
|
|
256
249
|
const location = normalizeOptionalString(params.location);
|
|
257
250
|
const country = normalizeOptionalString(params.country);
|
|
258
|
-
const baseUrl =
|
|
251
|
+
const baseUrl = connection.baseUrl;
|
|
259
252
|
const cacheKey = normalizeCacheKey(JSON.stringify({
|
|
260
253
|
type: "firecrawl-search",
|
|
261
254
|
provider: providerId,
|
|
255
|
+
credential: apiKey ? hash("sha256", apiKey, "hex") : void 0,
|
|
262
256
|
q: params.query,
|
|
263
257
|
count,
|
|
264
258
|
baseUrl,
|
|
@@ -391,9 +385,8 @@ function parseFirecrawlScrapePayload(params) {
|
|
|
391
385
|
async function runFirecrawlScrape(params) {
|
|
392
386
|
params.signal?.throwIfAborted();
|
|
393
387
|
assertFirecrawlScrapeTargetAllowed(params.url);
|
|
394
|
-
const apiKey =
|
|
388
|
+
const { apiKey, baseUrl } = resolveFirecrawlConnection(params.cfg, "webFetch");
|
|
395
389
|
if (!apiKey && params.access !== "keyless") throw new Error("firecrawl_scrape needs a Firecrawl API key. Set FIRECRAWL_API_KEY in the Gateway environment, or configure plugins.entries.firecrawl.config.webFetch.apiKey.");
|
|
396
|
-
const baseUrl = resolveFirecrawlBaseUrl(params.cfg);
|
|
397
390
|
const timeoutSeconds = resolveFirecrawlScrapeTimeoutSeconds(params.cfg, params.timeoutSeconds);
|
|
398
391
|
const onlyMainContent = resolveFirecrawlOnlyMainContent(params.cfg, params.onlyMainContent);
|
|
399
392
|
const maxAgeMs = resolveFirecrawlMaxAgeMs(params.cfg, params.maxAgeMs);
|
|
@@ -437,4 +430,5 @@ const testing = {
|
|
|
437
430
|
resolveEndpoint,
|
|
438
431
|
resolveSearchItems
|
|
439
432
|
};
|
|
433
|
+
//#endregion
|
|
440
434
|
export { runFirecrawlScrape as n, runFirecrawlSearch as r, firecrawl_client_exports as t };
|
package/dist/.setup/{firecrawl-fetch-provider-EP1XFhDE.mjs → firecrawl-fetch-provider-Br32KRpR.mjs}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
2
2
|
import { readPositiveIntegerParam } from "openclaw/plugin-sdk/param-readers";
|
|
3
3
|
import { enablePluginInConfig } from "openclaw/plugin-sdk/provider-web-fetch-contract";
|
|
4
|
-
|
|
4
|
+
//#region extensions/firecrawl/src/firecrawl-fetch-provider-shared.ts
|
|
5
5
|
function ensureRecord(target, key) {
|
|
6
6
|
const current = target[key];
|
|
7
7
|
if (current && typeof current === "object" && !Array.isArray(current)) return current;
|
|
@@ -49,8 +49,9 @@ const FIRECRAWL_WEB_FETCH_PROVIDER_SHARED = {
|
|
|
49
49
|
webFetch.apiKey = value;
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
//#endregion
|
|
53
|
+
//#region extensions/firecrawl/src/firecrawl-fetch-provider.ts
|
|
54
|
+
const loadFirecrawlClientModule = createLazyRuntimeModule(() => import("./firecrawl-client--j4MjwgU.mjs").then((n) => n.t));
|
|
54
55
|
function createFirecrawlWebFetchProvider() {
|
|
55
56
|
return {
|
|
56
57
|
...FIRECRAWL_WEB_FETCH_PROVIDER_SHARED,
|
|
@@ -80,4 +81,5 @@ function createFirecrawlWebFetchProvider() {
|
|
|
80
81
|
})
|
|
81
82
|
};
|
|
82
83
|
}
|
|
84
|
+
//#endregion
|
|
83
85
|
export { createFirecrawlWebFetchProvider as t };
|
|
@@ -2,9 +2,9 @@ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
|
2
2
|
import { readPositiveIntegerParam } from "openclaw/plugin-sdk/param-readers";
|
|
3
3
|
import { asOptionalRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
4
|
import { createWebSearchProviderContractFields, enablePluginInConfig } from "openclaw/plugin-sdk/provider-web-search-contract";
|
|
5
|
-
|
|
5
|
+
//#region extensions/firecrawl/src/firecrawl-search-provider.ts
|
|
6
6
|
const FIRECRAWL_CREDENTIAL_PATH = "plugins.entries.firecrawl.config.webSearch.apiKey";
|
|
7
|
-
const loadFirecrawlClientModule = createLazyRuntimeModule(() => import("./firecrawl-client
|
|
7
|
+
const loadFirecrawlClientModule = createLazyRuntimeModule(() => import("./firecrawl-client--j4MjwgU.mjs").then((n) => n.t));
|
|
8
8
|
const GenericFirecrawlSearchSchema = {
|
|
9
9
|
type: "object",
|
|
10
10
|
properties: {
|
|
@@ -106,4 +106,5 @@ function createFirecrawlWebSearchProvider() {
|
|
|
106
106
|
function createFirecrawlFreeWebSearchProvider() {
|
|
107
107
|
return createFirecrawlSearchProvider(true);
|
|
108
108
|
}
|
|
109
|
+
//#endregion
|
|
109
110
|
export { createFirecrawlWebSearchProvider as n, createFirecrawlFreeWebSearchProvider as t };
|
package/dist/api.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as runFirecrawlScrape } from "./.setup/firecrawl-client
|
|
2
|
-
|
|
1
|
+
import { n as runFirecrawlScrape } from "./.setup/firecrawl-client--j4MjwgU.mjs";
|
|
2
|
+
//#region extensions/firecrawl/api.ts
|
|
3
3
|
async function fetchFirecrawlContent(params) {
|
|
4
4
|
const cfg = { plugins: { entries: { firecrawl: {
|
|
5
5
|
enabled: true,
|
|
@@ -30,4 +30,5 @@ async function fetchFirecrawlContent(params) {
|
|
|
30
30
|
warning: result.warning
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
|
+
//#endregion
|
|
33
34
|
export { fetchFirecrawlContent };
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { n as runFirecrawlScrape, r as runFirecrawlSearch } from "./.setup/firecrawl-client
|
|
2
|
-
import { t as createFirecrawlWebFetchProvider } from "./.setup/firecrawl-fetch-provider-
|
|
3
|
-
import { n as createFirecrawlWebSearchProvider, t as createFirecrawlFreeWebSearchProvider } from "./.setup/firecrawl-search-provider-
|
|
1
|
+
import { n as runFirecrawlScrape, r as runFirecrawlSearch } from "./.setup/firecrawl-client--j4MjwgU.mjs";
|
|
2
|
+
import { t as createFirecrawlWebFetchProvider } from "./.setup/firecrawl-fetch-provider-Br32KRpR.mjs";
|
|
3
|
+
import { n as createFirecrawlWebSearchProvider, t as createFirecrawlFreeWebSearchProvider } from "./.setup/firecrawl-search-provider-D_gyroLO.mjs";
|
|
4
4
|
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
|
|
5
5
|
import { optionalStringEnum } from "openclaw/plugin-sdk/channel-actions";
|
|
6
6
|
import { jsonResult, readNonNegativeIntegerParam, readPositiveIntegerParam, readStringArrayParam, readStringParam } from "openclaw/plugin-sdk/provider-web-search";
|
|
7
7
|
import { Type } from "typebox";
|
|
8
|
-
|
|
8
|
+
//#region extensions/firecrawl/src/firecrawl-scrape-tool.ts
|
|
9
9
|
const FirecrawlScrapeToolSchema = Type.Object({
|
|
10
10
|
url: Type.String({ description: "HTTP or HTTPS URL to scrape via Firecrawl." }),
|
|
11
11
|
extractMode: optionalStringEnum(["markdown", "text"], { description: "Extraction mode (\"markdown\" or \"text\"). Default: markdown." }),
|
|
@@ -62,7 +62,8 @@ function createFirecrawlScrapeTool(api) {
|
|
|
62
62
|
}
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region extensions/firecrawl/src/firecrawl-search-tool.ts
|
|
66
67
|
const FirecrawlSearchToolSchema = Type.Object({
|
|
67
68
|
query: Type.String({ description: "Search query string." }),
|
|
68
69
|
count: Type.Optional(Type.Integer({
|
|
@@ -113,7 +114,8 @@ function createFirecrawlSearchTool(api) {
|
|
|
113
114
|
}
|
|
114
115
|
};
|
|
115
116
|
}
|
|
116
|
-
|
|
117
|
+
//#endregion
|
|
118
|
+
//#region extensions/firecrawl/index.ts
|
|
117
119
|
var firecrawl_default = definePluginEntry({
|
|
118
120
|
id: "firecrawl",
|
|
119
121
|
name: "Firecrawl Plugin",
|
|
@@ -126,4 +128,5 @@ var firecrawl_default = definePluginEntry({
|
|
|
126
128
|
api.registerTool(createFirecrawlScrapeTool(api));
|
|
127
129
|
}
|
|
128
130
|
});
|
|
131
|
+
//#endregion
|
|
129
132
|
export { firecrawl_default as default };
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { t as createFirecrawlWebFetchProvider } from "./.setup/firecrawl-fetch-provider-Br32KRpR.mjs";
|
|
2
2
|
import "./web-fetch-provider.js";
|
|
3
|
+
export { createFirecrawlWebFetchProvider };
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { t as createFirecrawlWebFetchProvider } from "./.setup/firecrawl-fetch-provider-Br32KRpR.mjs";
|
|
2
|
+
export { createFirecrawlWebFetchProvider };
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { n as createFirecrawlWebSearchProvider, t as createFirecrawlFreeWebSearchProvider } from "./.setup/firecrawl-search-provider-D_gyroLO.mjs";
|
|
2
2
|
import "./web-search-provider.js";
|
|
3
|
+
export { createFirecrawlFreeWebSearchProvider, createFirecrawlWebSearchProvider };
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { n as createFirecrawlWebSearchProvider, t as createFirecrawlFreeWebSearchProvider } from "./.setup/firecrawl-search-provider-D_gyroLO.mjs";
|
|
2
|
+
export { createFirecrawlFreeWebSearchProvider, createFirecrawlWebSearchProvider };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/firecrawl-plugin",
|
|
3
|
-
"version": "2026.11.
|
|
3
|
+
"version": "2026.11.3",
|
|
4
4
|
"description": "OpenClaw Firecrawl plugin.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
"minHostVersion": ">=2026.6.8"
|
|
22
22
|
},
|
|
23
23
|
"compat": {
|
|
24
|
-
"pluginApi": ">=2026.11.
|
|
24
|
+
"pluginApi": ">=2026.11.3"
|
|
25
25
|
},
|
|
26
26
|
"build": {
|
|
27
|
-
"openclawVersion": "2026.11.
|
|
27
|
+
"openclawVersion": "2026.11.3",
|
|
28
28
|
"bundledDist": false
|
|
29
29
|
},
|
|
30
30
|
"release": {
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"assets/activity.svg"
|
|
44
44
|
],
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
"openclaw": ">=2026.11.
|
|
46
|
+
"openclaw": ">=2026.11.3"
|
|
47
47
|
},
|
|
48
48
|
"peerDependenciesMeta": {
|
|
49
49
|
"openclaw": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"entries":[{"output":"api.js","source":"extensions/firecrawl/api.ts"},{"output":"index.js","source":"extensions/firecrawl/index.ts"},{"output":"web-fetch-contract-api.js","source":"extensions/firecrawl/web-fetch-contract-api.ts"},{"output":"web-fetch-provider.js","source":"extensions/firecrawl/web-fetch-provider.ts"},{"output":"web-search-contract-api.js","source":"extensions/firecrawl/web-search-contract-api.ts"},{"output":"web-search-provider.js","source":"extensions/firecrawl/web-search-provider.ts"}],"chunks":[{"output":".setup/firecrawl-client-Dk_bi5M_.mjs","sha256":"774b38239e4f578c2149ec27ef91f46ebf99354db4e16243e6f83209aaaed717","facadeSource":null,"sources":["extensions/firecrawl/src/config.ts","extensions/firecrawl/src/firecrawl-client.ts"]},{"output":".setup/firecrawl-fetch-provider-EP1XFhDE.mjs","sha256":"81a0a868cda6386f992e84287f96e973374877e9299337698d5f1db4a23ea537","facadeSource":null,"sources":["extensions/firecrawl/src/firecrawl-fetch-provider-shared.ts","extensions/firecrawl/src/firecrawl-fetch-provider.ts"]},{"output":".setup/firecrawl-search-provider-Dg-_xx_m.mjs","sha256":"13f6a7f2b72fa874d55f7afdb6378b76f36710c5bb52674a8b770456d2c1f4dd","facadeSource":null,"sources":["extensions/firecrawl/src/firecrawl-search-provider.ts"]},{"output":"api.js","sha256":"e28d050266697b2e5c369142ced5af70472bd93fec74a8e69897eac82f961dcc","facadeSource":"extensions/firecrawl/api.ts","sources":["extensions/firecrawl/api.ts"]},{"output":"index.js","sha256":"7391b6054e3a1882899054dac3303ff5d66cdcdf0242f0ca29949c280d6dcd31","facadeSource":"extensions/firecrawl/index.ts","sources":["extensions/firecrawl/index.ts","extensions/firecrawl/src/firecrawl-scrape-tool.ts","extensions/firecrawl/src/firecrawl-search-tool.ts"]},{"output":"web-fetch-contract-api.js","sha256":"6dd17949a8c79a884ebb5bb2003a1f970df8388242fd0f09734fd83fd577a864","facadeSource":"extensions/firecrawl/web-fetch-contract-api.ts","sources":[]},{"output":"web-fetch-provider.js","sha256":"283c5b3182c3a3f605ede1a44accdcb85f8a5409ab0356127bf7d2223d955ecf","facadeSource":"extensions/firecrawl/web-fetch-provider.ts","sources":[]},{"output":"web-search-contract-api.js","sha256":"f54c73b6596a5f879bfeb9d06f969652d4943e30d1ad7b94ec5568f6495e3e83","facadeSource":"extensions/firecrawl/web-search-contract-api.ts","sources":[]},{"output":"web-search-provider.js","sha256":"c3ad8cd2e10fe23a708f81b1b5e5b5257d17f8e59cf40e407be3812016986ce4","facadeSource":"extensions/firecrawl/web-search-provider.ts","sources":[]}],"unrenderedSources":["extensions/firecrawl/web-fetch-contract-api.ts","extensions/firecrawl/web-fetch-provider.ts","extensions/firecrawl/web-search-contract-api.ts","extensions/firecrawl/web-search-provider.ts"]}
|