oclaw/openclaw/extensions/firecrawl/api.ts
oliver dbbe3add6a 重构主控编排与运行时预热链路,统一工作区提示词/专家调度协议并补齐 wiki 记忆注入与写回闭环。
同时收敛启动与运维脚本默认行为(含 wiki worker)、更新 Admin 可观测性与相关测试,降低首轮时延并提高运行稳定性。

Made-with: Cursor
2026-04-26 08:34:33 +08:00

67 lines
1.8 KiB
TypeScript

import type { OpenClawConfig } from "openclaw/plugin-sdk/config-runtime";
import { readStringValue } from "openclaw/plugin-sdk/text-runtime";
import { runFirecrawlScrape } from "./src/firecrawl-client.js";
export type FetchFirecrawlContentParams = {
url: string;
extractMode: "markdown" | "text";
apiKey: string;
baseUrl: string;
onlyMainContent: boolean;
maxAgeMs: number;
proxy: "auto" | "basic" | "stealth";
storeInCache: boolean;
timeoutSeconds: number;
maxChars?: number;
};
export type FetchFirecrawlContentResult = {
text: string;
title?: string;
finalUrl?: string;
status?: number;
warning?: string;
};
export async function fetchFirecrawlContent(
params: FetchFirecrawlContentParams,
): Promise<FetchFirecrawlContentResult> {
const cfg: OpenClawConfig = {
plugins: {
entries: {
firecrawl: {
enabled: true,
config: {
webFetch: {
apiKey: params.apiKey,
baseUrl: params.baseUrl,
onlyMainContent: params.onlyMainContent,
maxAgeMs: params.maxAgeMs,
timeoutSeconds: params.timeoutSeconds,
},
},
},
},
},
};
const result = await runFirecrawlScrape({
cfg,
url: params.url,
extractMode: params.extractMode,
maxChars: params.maxChars,
proxy: params.proxy,
storeInCache: params.storeInCache,
onlyMainContent: params.onlyMainContent,
maxAgeMs: params.maxAgeMs,
timeoutSeconds: params.timeoutSeconds,
});
return {
text: typeof result.text === "string" ? result.text : "",
title: readStringValue(result.title),
finalUrl: readStringValue(result.finalUrl),
status: typeof result.status === "number" ? result.status : undefined,
warning: readStringValue(result.warning),
};
}