@jam-nodes/nodes 0.2.7 → 0.2.10
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 +147 -0
- package/dist/ai/analyze-posts.d.ts +3 -3
- package/dist/ai/draft-emails.d.ts +1 -1
- package/dist/index.d.ts +363 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -3
- package/dist/index.js.map +1 -1
- package/dist/integrations/apollo/search-contacts.d.ts +4 -4
- package/dist/integrations/dataforseo/keyword-research.d.ts +6 -6
- package/dist/integrations/dataforseo/keyword-research.d.ts.map +1 -1
- package/dist/integrations/dataforseo/keyword-research.js +2 -8
- package/dist/integrations/dataforseo/keyword-research.js.map +1 -1
- package/dist/integrations/devto/create-article.d.ts +20 -0
- package/dist/integrations/devto/create-article.d.ts.map +1 -0
- package/dist/integrations/devto/create-article.js +67 -0
- package/dist/integrations/devto/create-article.js.map +1 -0
- package/dist/integrations/devto/credentials.d.ts +2 -0
- package/dist/integrations/devto/credentials.d.ts.map +1 -0
- package/dist/integrations/devto/credentials.js +17 -0
- package/dist/integrations/devto/credentials.js.map +1 -0
- package/dist/integrations/devto/get-articles.d.ts +21 -0
- package/dist/integrations/devto/get-articles.d.ts.map +1 -0
- package/dist/integrations/devto/get-articles.js +78 -0
- package/dist/integrations/devto/get-articles.js.map +1 -0
- package/dist/integrations/devto/index.d.ts +6 -0
- package/dist/integrations/devto/index.d.ts.map +1 -0
- package/dist/integrations/devto/index.js +6 -0
- package/dist/integrations/devto/index.js.map +1 -0
- package/dist/integrations/devto/schemas.d.ts +243 -0
- package/dist/integrations/devto/schemas.d.ts.map +1 -0
- package/dist/integrations/devto/schemas.js +69 -0
- package/dist/integrations/devto/schemas.js.map +1 -0
- package/dist/integrations/devto/update-article.d.ts +19 -0
- package/dist/integrations/devto/update-article.d.ts.map +1 -0
- package/dist/integrations/devto/update-article.js +65 -0
- package/dist/integrations/devto/update-article.js.map +1 -0
- package/dist/integrations/discord/schemas.d.ts +2 -2
- package/dist/integrations/discord/send-message.d.ts +1 -1
- package/dist/integrations/firecrawl/crawl.d.ts +121 -0
- package/dist/integrations/firecrawl/crawl.d.ts.map +1 -0
- package/dist/integrations/firecrawl/crawl.js +168 -0
- package/dist/integrations/firecrawl/crawl.js.map +1 -0
- package/dist/integrations/firecrawl/extract.d.ts +82 -0
- package/dist/integrations/firecrawl/extract.d.ts.map +1 -0
- package/dist/integrations/firecrawl/extract.js +168 -0
- package/dist/integrations/firecrawl/extract.js.map +1 -0
- package/dist/integrations/firecrawl/index.d.ts +4 -0
- package/dist/integrations/firecrawl/index.d.ts.map +1 -0
- package/dist/integrations/firecrawl/index.js +4 -0
- package/dist/integrations/firecrawl/index.js.map +1 -0
- package/dist/integrations/firecrawl/scrape.d.ts +1208 -0
- package/dist/integrations/firecrawl/scrape.d.ts.map +1 -0
- package/dist/integrations/firecrawl/scrape.js +254 -0
- package/dist/integrations/firecrawl/scrape.js.map +1 -0
- package/dist/integrations/index.d.ts +4 -1
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +7 -1
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/social/credentials.d.ts +2 -0
- package/dist/integrations/social/credentials.d.ts.map +1 -0
- package/dist/integrations/social/credentials.js +36 -0
- package/dist/integrations/social/credentials.js.map +1 -0
- package/dist/integrations/social/index.d.ts +8 -0
- package/dist/integrations/social/index.d.ts.map +1 -1
- package/dist/integrations/social/index.js +8 -0
- package/dist/integrations/social/index.js.map +1 -1
- package/dist/integrations/social/twitter-client.d.ts +6 -0
- package/dist/integrations/social/twitter-client.d.ts.map +1 -0
- package/dist/integrations/social/twitter-client.js +140 -0
- package/dist/integrations/social/twitter-client.js.map +1 -0
- package/dist/integrations/social/twitter-create-tweet.d.ts +61 -0
- package/dist/integrations/social/twitter-create-tweet.d.ts.map +1 -0
- package/dist/integrations/social/twitter-create-tweet.js +83 -0
- package/dist/integrations/social/twitter-create-tweet.js.map +1 -0
- package/dist/integrations/social/twitter-delete-tweet.d.ts +23 -0
- package/dist/integrations/social/twitter-delete-tweet.d.ts.map +1 -0
- package/dist/integrations/social/twitter-delete-tweet.js +41 -0
- package/dist/integrations/social/twitter-delete-tweet.js.map +1 -0
- package/dist/integrations/social/twitter-get-user-by-username.d.ts +39 -0
- package/dist/integrations/social/twitter-get-user-by-username.d.ts.map +1 -0
- package/dist/integrations/social/twitter-get-user-by-username.js +56 -0
- package/dist/integrations/social/twitter-get-user-by-username.js.map +1 -0
- package/dist/integrations/social/twitter-like-tweet.d.ts +23 -0
- package/dist/integrations/social/twitter-like-tweet.d.ts.map +1 -0
- package/dist/integrations/social/twitter-like-tweet.js +48 -0
- package/dist/integrations/social/twitter-like-tweet.js.map +1 -0
- package/dist/integrations/social/twitter-retweet.d.ts +23 -0
- package/dist/integrations/social/twitter-retweet.d.ts.map +1 -0
- package/dist/integrations/social/twitter-retweet.js +48 -0
- package/dist/integrations/social/twitter-retweet.js.map +1 -0
- package/dist/integrations/social/twitter-search-tweets.d.ts +77 -0
- package/dist/integrations/social/twitter-search-tweets.d.ts.map +1 -0
- package/dist/integrations/social/twitter-search-tweets.js +76 -0
- package/dist/integrations/social/twitter-search-tweets.js.map +1 -0
- package/dist/integrations/social/twitter-send-dm.d.ts +39 -0
- package/dist/integrations/social/twitter-send-dm.d.ts.map +1 -0
- package/dist/integrations/social/twitter-send-dm.js +67 -0
- package/dist/integrations/social/twitter-send-dm.js.map +1 -0
- package/dist/integrations/wordpress/createPost.d.ts +25 -0
- package/dist/integrations/wordpress/createPost.d.ts.map +1 -0
- package/dist/integrations/wordpress/createPost.js +67 -0
- package/dist/integrations/wordpress/createPost.js.map +1 -0
- package/dist/integrations/wordpress/credentials.d.ts +2 -0
- package/dist/integrations/wordpress/credentials.d.ts.map +1 -0
- package/dist/integrations/wordpress/credentials.js +25 -0
- package/dist/integrations/wordpress/credentials.js.map +1 -0
- package/dist/integrations/wordpress/getPosts.d.ts +28 -0
- package/dist/integrations/wordpress/getPosts.d.ts.map +1 -0
- package/dist/integrations/wordpress/getPosts.js +70 -0
- package/dist/integrations/wordpress/getPosts.js.map +1 -0
- package/dist/integrations/wordpress/index.d.ts +8 -0
- package/dist/integrations/wordpress/index.d.ts.map +1 -0
- package/dist/integrations/wordpress/index.js +7 -0
- package/dist/integrations/wordpress/index.js.map +1 -0
- package/dist/integrations/wordpress/schemas.d.ts +411 -0
- package/dist/integrations/wordpress/schemas.d.ts.map +1 -0
- package/dist/integrations/wordpress/schemas.js +110 -0
- package/dist/integrations/wordpress/schemas.js.map +1 -0
- package/dist/integrations/wordpress/updatePost.d.ts +21 -0
- package/dist/integrations/wordpress/updatePost.d.ts.map +1 -0
- package/dist/integrations/wordpress/updatePost.js +59 -0
- package/dist/integrations/wordpress/updatePost.js.map +1 -0
- package/dist/integrations/wordpress/uploadMedia.d.ts +15 -0
- package/dist/integrations/wordpress/uploadMedia.d.ts.map +1 -0
- package/dist/integrations/wordpress/uploadMedia.js +56 -0
- package/dist/integrations/wordpress/uploadMedia.js.map +1 -0
- package/dist/integrations/wordpress/utils.d.ts +15 -0
- package/dist/integrations/wordpress/utils.d.ts.map +1 -0
- package/dist/integrations/wordpress/utils.js +15 -0
- package/dist/integrations/wordpress/utils.js.map +1 -0
- package/dist/schemas/ai.d.ts +20 -20
- package/package.json +2 -1
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { defineNode } from '@jam-nodes/core';
|
|
3
|
+
import { fetchWithRetry, sleep } from '../../utils/http.js';
|
|
4
|
+
// =============================================================================
|
|
5
|
+
// Constants
|
|
6
|
+
// =============================================================================
|
|
7
|
+
const FIRECRAWL_API_BASE = 'https://api.firecrawl.dev/v2';
|
|
8
|
+
const POLL_INTERVAL_MS = 2000;
|
|
9
|
+
const MAX_POLL_ATTEMPTS = 300; // 10 minutes at 2s intervals
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Schemas
|
|
12
|
+
// =============================================================================
|
|
13
|
+
export const FirecrawlCrawlInputSchema = z.object({
|
|
14
|
+
/** The base URL to start crawling from */
|
|
15
|
+
url: z.string().url(),
|
|
16
|
+
/** URL pathname regex patterns to exclude from crawling */
|
|
17
|
+
excludePaths: z.array(z.string()).optional(),
|
|
18
|
+
/** URL pathname regex patterns to include in crawling */
|
|
19
|
+
includePaths: z.array(z.string()).optional(),
|
|
20
|
+
/** Maximum depth based on discovery order */
|
|
21
|
+
maxDiscoveryDepth: z.number().int().optional(),
|
|
22
|
+
/** Maximum number of pages to crawl */
|
|
23
|
+
limit: z.number().int().default(10000),
|
|
24
|
+
});
|
|
25
|
+
export const FirecrawlCrawlOutputSchema = z.object({
|
|
26
|
+
status: z.enum(['completed', 'failed']),
|
|
27
|
+
total: z.number(),
|
|
28
|
+
completed: z.number(),
|
|
29
|
+
creditsUsed: z.number(),
|
|
30
|
+
expiresAt: z.string(),
|
|
31
|
+
data: z.array(z.object({
|
|
32
|
+
markdown: z.string().optional(),
|
|
33
|
+
html: z.string().nullable().optional(),
|
|
34
|
+
rawHtml: z.string().nullable().optional(),
|
|
35
|
+
links: z.array(z.string()).optional(),
|
|
36
|
+
screenshot: z.string().nullable().optional(),
|
|
37
|
+
metadata: z.record(z.unknown()).optional(),
|
|
38
|
+
})),
|
|
39
|
+
});
|
|
40
|
+
// =============================================================================
|
|
41
|
+
// Firecrawl API Functions
|
|
42
|
+
// =============================================================================
|
|
43
|
+
/**
|
|
44
|
+
* Start a Firecrawl crawl job (POST /v2/crawl)
|
|
45
|
+
*/
|
|
46
|
+
async function startCrawlJob(bearerToken, params) {
|
|
47
|
+
const requestBody = {
|
|
48
|
+
url: params.url,
|
|
49
|
+
...(params.excludePaths && { excludePaths: params.excludePaths }),
|
|
50
|
+
...(params.includePaths && { includePaths: params.includePaths }),
|
|
51
|
+
...(params.maxDiscoveryDepth != null && { maxDiscoveryDepth: params.maxDiscoveryDepth }),
|
|
52
|
+
...(params.limit != null && { limit: params.limit })
|
|
53
|
+
};
|
|
54
|
+
const response = await fetchWithRetry(`${FIRECRAWL_API_BASE}/crawl`, {
|
|
55
|
+
method: 'POST',
|
|
56
|
+
headers: {
|
|
57
|
+
'Content-Type': 'application/json',
|
|
58
|
+
Authorization: `Bearer ${bearerToken}`,
|
|
59
|
+
},
|
|
60
|
+
body: JSON.stringify(requestBody),
|
|
61
|
+
}, { maxRetries: 3, backoffMs: 1000, timeoutMs: 30000 });
|
|
62
|
+
if (!response.ok) {
|
|
63
|
+
const errorText = await response.text();
|
|
64
|
+
throw new Error(`Firecrawl crawl POST error: ${response.status} - ${errorText}`);
|
|
65
|
+
}
|
|
66
|
+
return response.json();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Poll a Firecrawl crawl job until completion (GET /v2/crawl/:id)
|
|
70
|
+
*/
|
|
71
|
+
async function pollCrawlJob(bearerToken, jobId) {
|
|
72
|
+
for (let attempt = 0; attempt < MAX_POLL_ATTEMPTS; attempt++) {
|
|
73
|
+
const response = await fetchWithRetry(`${FIRECRAWL_API_BASE}/crawl/${jobId}`, {
|
|
74
|
+
method: 'GET',
|
|
75
|
+
headers: {
|
|
76
|
+
Authorization: `Bearer ${bearerToken}`,
|
|
77
|
+
},
|
|
78
|
+
}, { maxRetries: 3, backoffMs: 1000, timeoutMs: 30000 });
|
|
79
|
+
if (!response.ok) {
|
|
80
|
+
const errorText = await response.text();
|
|
81
|
+
throw new Error(`Firecrawl crawl GET error: ${response.status} - ${errorText}`);
|
|
82
|
+
}
|
|
83
|
+
const result = await response.json();
|
|
84
|
+
if (result.status === 'completed' || result.status === 'failed') {
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
await sleep(POLL_INTERVAL_MS);
|
|
88
|
+
}
|
|
89
|
+
throw new Error('Firecrawl crawl timed out waiting for completion');
|
|
90
|
+
}
|
|
91
|
+
// =============================================================================
|
|
92
|
+
// Node Definition
|
|
93
|
+
// =============================================================================
|
|
94
|
+
/**
|
|
95
|
+
* Firecrawl Crawl Node
|
|
96
|
+
*
|
|
97
|
+
* Crawls a website starting from a base URL, following links and scraping
|
|
98
|
+
* each discovered page. Starts a crawl job then polls until completion.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* const result = await firecrawlCrawlNode.executor({
|
|
103
|
+
* url: 'https://example.com',
|
|
104
|
+
* limit: 50,
|
|
105
|
+
* includePaths: ['/docs/.*'],
|
|
106
|
+
* }, context);
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export const firecrawlCrawlNode = defineNode({
|
|
110
|
+
type: 'firecrawl_crawl',
|
|
111
|
+
name: 'Firecrawl Crawl',
|
|
112
|
+
description: 'Crawl a website and extract content from all discovered pages using Firecrawl',
|
|
113
|
+
category: 'integration',
|
|
114
|
+
inputSchema: FirecrawlCrawlInputSchema,
|
|
115
|
+
outputSchema: FirecrawlCrawlOutputSchema,
|
|
116
|
+
estimatedDuration: 60,
|
|
117
|
+
capabilities: {
|
|
118
|
+
supportsRerun: true,
|
|
119
|
+
supportsCancel: true,
|
|
120
|
+
},
|
|
121
|
+
executor: async (input, context) => {
|
|
122
|
+
try {
|
|
123
|
+
// Check for Bearer Token
|
|
124
|
+
const bearerToken = context.credentials?.firecrawl?.bearerToken;
|
|
125
|
+
if (!bearerToken) {
|
|
126
|
+
return {
|
|
127
|
+
success: false,
|
|
128
|
+
error: 'Firecrawl Bearer Token not configured. Please provide context.credentials.firecrawl.bearerToken.',
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
// Start crawling job
|
|
132
|
+
const job = await startCrawlJob(bearerToken, {
|
|
133
|
+
url: input.url,
|
|
134
|
+
excludePaths: input.excludePaths,
|
|
135
|
+
includePaths: input.includePaths,
|
|
136
|
+
maxDiscoveryDepth: input.maxDiscoveryDepth,
|
|
137
|
+
limit: input.limit,
|
|
138
|
+
});
|
|
139
|
+
if (!job.success) {
|
|
140
|
+
return {
|
|
141
|
+
success: false,
|
|
142
|
+
error: 'Failed to start Firecrawl crawl job',
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
// Poll crawl jobs for scraped website data
|
|
146
|
+
const result = await pollCrawlJob(bearerToken, job.id);
|
|
147
|
+
const status = result.status;
|
|
148
|
+
return {
|
|
149
|
+
success: true,
|
|
150
|
+
output: {
|
|
151
|
+
status,
|
|
152
|
+
total: result.total,
|
|
153
|
+
completed: result.completed,
|
|
154
|
+
creditsUsed: result.creditsUsed,
|
|
155
|
+
expiresAt: result.expiresAt,
|
|
156
|
+
data: result.data,
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
return {
|
|
162
|
+
success: false,
|
|
163
|
+
error: error instanceof Error ? error.message : 'Failed to crawl URL',
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
//# sourceMappingURL=crawl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crawl.js","sourceRoot":"","sources":["../../../src/integrations/firecrawl/crawl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const FirecrawlExtractInputSchema: z.ZodObject<{
|
|
3
|
+
/** URLs to extract data from (supports glob patterns) */
|
|
4
|
+
urls: z.ZodArray<z.ZodString, "many">;
|
|
5
|
+
/** Prompt to guide the extraction process */
|
|
6
|
+
prompt: z.ZodOptional<z.ZodString>;
|
|
7
|
+
/** JSON Schema defining the structure of the extracted data */
|
|
8
|
+
schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
urls: string[];
|
|
11
|
+
schema?: Record<string, unknown> | undefined;
|
|
12
|
+
prompt?: string | undefined;
|
|
13
|
+
}, {
|
|
14
|
+
urls: string[];
|
|
15
|
+
schema?: Record<string, unknown> | undefined;
|
|
16
|
+
prompt?: string | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
export type FirecrawlExtractInput = z.infer<typeof FirecrawlExtractInputSchema>;
|
|
19
|
+
export declare const FirecrawlExtractOutputSchema: z.ZodObject<{
|
|
20
|
+
success: z.ZodBoolean;
|
|
21
|
+
status: z.ZodEnum<["completed", "failed", "cancelled"]>;
|
|
22
|
+
/** Extracted data matching the provided schema */
|
|
23
|
+
data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
24
|
+
/** Number of tokens used by the extract job */
|
|
25
|
+
tokensUsed: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
expiresAt: z.ZodOptional<z.ZodString>;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
status: "completed" | "failed" | "cancelled";
|
|
29
|
+
success: boolean;
|
|
30
|
+
data: Record<string, unknown>;
|
|
31
|
+
expiresAt?: string | undefined;
|
|
32
|
+
tokensUsed?: number | undefined;
|
|
33
|
+
}, {
|
|
34
|
+
status: "completed" | "failed" | "cancelled";
|
|
35
|
+
success: boolean;
|
|
36
|
+
data: Record<string, unknown>;
|
|
37
|
+
expiresAt?: string | undefined;
|
|
38
|
+
tokensUsed?: number | undefined;
|
|
39
|
+
}>;
|
|
40
|
+
export type FirecrawlExtractOutput = z.infer<typeof FirecrawlExtractOutputSchema>;
|
|
41
|
+
/**
|
|
42
|
+
* Firecrawl Extract Node
|
|
43
|
+
*
|
|
44
|
+
* Extracts structured data from one or more URLs using AI-powered extraction.
|
|
45
|
+
* Starts an extract job then polls until completion.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const result = await firecrawlExtractNode.executor({
|
|
50
|
+
* urls: ['https://example.com/pricing'],
|
|
51
|
+
* prompt: 'Extract the pricing plans with their features',
|
|
52
|
+
* schema: {
|
|
53
|
+
* type: 'object',
|
|
54
|
+
* properties: {
|
|
55
|
+
* plans: {
|
|
56
|
+
* type: 'array',
|
|
57
|
+
* items: {
|
|
58
|
+
* type: 'object',
|
|
59
|
+
* properties: {
|
|
60
|
+
* name: { type: 'string' },
|
|
61
|
+
* price: { type: 'number' },
|
|
62
|
+
* features: { type: 'array', items: { type: 'string' } },
|
|
63
|
+
* },
|
|
64
|
+
* },
|
|
65
|
+
* },
|
|
66
|
+
* },
|
|
67
|
+
* },
|
|
68
|
+
* }, context);
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare const firecrawlExtractNode: import("@jam-nodes/core").NodeDefinition<{
|
|
72
|
+
urls: string[];
|
|
73
|
+
schema?: Record<string, unknown> | undefined;
|
|
74
|
+
prompt?: string | undefined;
|
|
75
|
+
}, {
|
|
76
|
+
status: "completed" | "failed" | "cancelled";
|
|
77
|
+
success: boolean;
|
|
78
|
+
data: Record<string, unknown>;
|
|
79
|
+
expiresAt?: string | undefined;
|
|
80
|
+
tokensUsed?: number | undefined;
|
|
81
|
+
}>;
|
|
82
|
+
//# sourceMappingURL=extract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../src/integrations/firecrawl/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB,eAAO,MAAM,2BAA2B;IACtC,yDAAyD;;IAEzD,6CAA6C;;IAE7C,+DAA+D;;;;;;;;;;EAE/D,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,4BAA4B;;;IAGvC,kDAAkD;;IAElD,+CAA+C;;;;;;;;;;;;;;;EAG/C,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAoFlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;EA2D/B,CAAC"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { defineNode } from '@jam-nodes/core';
|
|
3
|
+
import { fetchWithRetry, sleep } from '../../utils/http.js';
|
|
4
|
+
// =============================================================================
|
|
5
|
+
// Constants
|
|
6
|
+
// =============================================================================
|
|
7
|
+
const FIRECRAWL_API_BASE = 'https://api.firecrawl.dev/v2';
|
|
8
|
+
const POLL_INTERVAL_MS = 2000;
|
|
9
|
+
const MAX_POLL_ATTEMPTS = 150; // 5 minutes at 2s intervals
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Schemas
|
|
12
|
+
// =============================================================================
|
|
13
|
+
export const FirecrawlExtractInputSchema = z.object({
|
|
14
|
+
/** URLs to extract data from (supports glob patterns) */
|
|
15
|
+
urls: z.array(z.string()).min(1),
|
|
16
|
+
/** Prompt to guide the extraction process */
|
|
17
|
+
prompt: z.string().optional(),
|
|
18
|
+
/** JSON Schema defining the structure of the extracted data */
|
|
19
|
+
schema: z.record(z.unknown()).optional(),
|
|
20
|
+
});
|
|
21
|
+
export const FirecrawlExtractOutputSchema = z.object({
|
|
22
|
+
success: z.boolean(),
|
|
23
|
+
status: z.enum(['completed', 'failed', 'cancelled']),
|
|
24
|
+
/** Extracted data matching the provided schema */
|
|
25
|
+
data: z.record(z.unknown()),
|
|
26
|
+
/** Number of tokens used by the extract job */
|
|
27
|
+
tokensUsed: z.number().int().optional(),
|
|
28
|
+
expiresAt: z.string().optional(),
|
|
29
|
+
});
|
|
30
|
+
// =============================================================================
|
|
31
|
+
// Firecrawl API Functions
|
|
32
|
+
// =============================================================================
|
|
33
|
+
/**
|
|
34
|
+
* Start a Firecrawl extract job (POST /v2/extract)
|
|
35
|
+
*/
|
|
36
|
+
async function startExtractJob(bearerToken, params) {
|
|
37
|
+
const requestBody = {
|
|
38
|
+
urls: params.urls,
|
|
39
|
+
...(params.prompt && { prompt: params.prompt }),
|
|
40
|
+
...(params.schema && { schema: params.schema }),
|
|
41
|
+
};
|
|
42
|
+
const response = await fetchWithRetry(`${FIRECRAWL_API_BASE}/extract`, {
|
|
43
|
+
method: 'POST',
|
|
44
|
+
headers: {
|
|
45
|
+
'Content-Type': 'application/json',
|
|
46
|
+
Authorization: `Bearer ${bearerToken}`,
|
|
47
|
+
},
|
|
48
|
+
body: JSON.stringify(requestBody),
|
|
49
|
+
}, { maxRetries: 3, backoffMs: 1000, timeoutMs: 30000 });
|
|
50
|
+
if (!response.ok) {
|
|
51
|
+
const errorText = await response.text();
|
|
52
|
+
throw new Error(`Firecrawl extract POST error: ${response.status} - ${errorText}`);
|
|
53
|
+
}
|
|
54
|
+
return response.json();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Poll a Firecrawl extract job until completion (GET /v2/extract/:id)
|
|
58
|
+
*/
|
|
59
|
+
async function pollExtractJob(bearerToken, jobId) {
|
|
60
|
+
for (let attempt = 0; attempt < MAX_POLL_ATTEMPTS; attempt++) {
|
|
61
|
+
const response = await fetchWithRetry(`${FIRECRAWL_API_BASE}/extract/${jobId}`, {
|
|
62
|
+
method: 'GET',
|
|
63
|
+
headers: {
|
|
64
|
+
Authorization: `Bearer ${bearerToken}`,
|
|
65
|
+
},
|
|
66
|
+
}, { maxRetries: 3, backoffMs: 1000, timeoutMs: 30000 });
|
|
67
|
+
if (!response.ok) {
|
|
68
|
+
const errorText = await response.text();
|
|
69
|
+
throw new Error(`Firecrawl extract GET error: ${response.status} - ${errorText}`);
|
|
70
|
+
}
|
|
71
|
+
const result = await response.json();
|
|
72
|
+
if (result.status === 'completed' || result.status === 'failed' || result.status === 'cancelled') {
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
await sleep(POLL_INTERVAL_MS);
|
|
76
|
+
}
|
|
77
|
+
throw new Error('Firecrawl extract timed out waiting for completion');
|
|
78
|
+
}
|
|
79
|
+
// =============================================================================
|
|
80
|
+
// Node Definition
|
|
81
|
+
// =============================================================================
|
|
82
|
+
/**
|
|
83
|
+
* Firecrawl Extract Node
|
|
84
|
+
*
|
|
85
|
+
* Extracts structured data from one or more URLs using AI-powered extraction.
|
|
86
|
+
* Starts an extract job then polls until completion.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const result = await firecrawlExtractNode.executor({
|
|
91
|
+
* urls: ['https://example.com/pricing'],
|
|
92
|
+
* prompt: 'Extract the pricing plans with their features',
|
|
93
|
+
* schema: {
|
|
94
|
+
* type: 'object',
|
|
95
|
+
* properties: {
|
|
96
|
+
* plans: {
|
|
97
|
+
* type: 'array',
|
|
98
|
+
* items: {
|
|
99
|
+
* type: 'object',
|
|
100
|
+
* properties: {
|
|
101
|
+
* name: { type: 'string' },
|
|
102
|
+
* price: { type: 'number' },
|
|
103
|
+
* features: { type: 'array', items: { type: 'string' } },
|
|
104
|
+
* },
|
|
105
|
+
* },
|
|
106
|
+
* },
|
|
107
|
+
* },
|
|
108
|
+
* },
|
|
109
|
+
* }, context);
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export const firecrawlExtractNode = defineNode({
|
|
113
|
+
type: 'firecrawl_extract',
|
|
114
|
+
name: 'Firecrawl Extract',
|
|
115
|
+
description: 'Extract structured data from URLs using AI-powered extraction via Firecrawl',
|
|
116
|
+
category: 'integration',
|
|
117
|
+
inputSchema: FirecrawlExtractInputSchema,
|
|
118
|
+
outputSchema: FirecrawlExtractOutputSchema,
|
|
119
|
+
estimatedDuration: 30,
|
|
120
|
+
capabilities: {
|
|
121
|
+
supportsRerun: true,
|
|
122
|
+
supportsCancel: true,
|
|
123
|
+
},
|
|
124
|
+
executor: async (input, context) => {
|
|
125
|
+
try {
|
|
126
|
+
// Check for Bearer Token
|
|
127
|
+
const bearerToken = context.credentials?.firecrawl?.bearerToken;
|
|
128
|
+
if (!bearerToken) {
|
|
129
|
+
return {
|
|
130
|
+
success: false,
|
|
131
|
+
error: 'Firecrawl Bearer Token not configured. Please provide context.credentials.firecrawl.bearerToken.',
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
// Start extraction job
|
|
135
|
+
const job = await startExtractJob(bearerToken, {
|
|
136
|
+
urls: input.urls,
|
|
137
|
+
prompt: input.prompt,
|
|
138
|
+
schema: input.schema,
|
|
139
|
+
});
|
|
140
|
+
if (!job.success) {
|
|
141
|
+
return {
|
|
142
|
+
success: false,
|
|
143
|
+
error: 'Failed to start Firecrawl extract job',
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
// Poll extraction jobs for extracted data
|
|
147
|
+
const result = await pollExtractJob(bearerToken, job.id);
|
|
148
|
+
const status = result.status;
|
|
149
|
+
return {
|
|
150
|
+
success: true,
|
|
151
|
+
output: {
|
|
152
|
+
success: result.success,
|
|
153
|
+
status,
|
|
154
|
+
data: result.data,
|
|
155
|
+
tokensUsed: result.tokensUsed,
|
|
156
|
+
expiresAt: result.expiresAt,
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
return {
|
|
162
|
+
success: false,
|
|
163
|
+
error: error instanceof Error ? error.message : 'Failed to extract data',
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
//# sourceMappingURL=extract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/integrations/firecrawl/extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { firecrawlScrapeNode, FirecrawlScrapeInputSchema, FirecrawlScrapeOutputSchema, type FirecrawlScrapeInput, type FirecrawlScrapeOutput, } from './scrape.js';
|
|
2
|
+
export { firecrawlCrawlNode, FirecrawlCrawlInputSchema, FirecrawlCrawlOutputSchema, type FirecrawlCrawlInput, type FirecrawlCrawlOutput, } from './crawl.js';
|
|
3
|
+
export { firecrawlExtractNode, FirecrawlExtractInputSchema, FirecrawlExtractOutputSchema, type FirecrawlExtractInput, type FirecrawlExtractOutput, } from './extract.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/firecrawl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { firecrawlScrapeNode, FirecrawlScrapeInputSchema, FirecrawlScrapeOutputSchema, } from './scrape.js';
|
|
2
|
+
export { firecrawlCrawlNode, FirecrawlCrawlInputSchema, FirecrawlCrawlOutputSchema, } from './crawl.js';
|
|
3
|
+
export { firecrawlExtractNode, FirecrawlExtractInputSchema, FirecrawlExtractOutputSchema, } from './extract.js';
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/firecrawl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,GAG5B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAG3B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,4BAA4B,GAG7B,MAAM,cAAc,CAAC"}
|