@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.
Files changed (132) hide show
  1. package/README.md +147 -0
  2. package/dist/ai/analyze-posts.d.ts +3 -3
  3. package/dist/ai/draft-emails.d.ts +1 -1
  4. package/dist/index.d.ts +363 -8
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +26 -3
  7. package/dist/index.js.map +1 -1
  8. package/dist/integrations/apollo/search-contacts.d.ts +4 -4
  9. package/dist/integrations/dataforseo/keyword-research.d.ts +6 -6
  10. package/dist/integrations/dataforseo/keyword-research.d.ts.map +1 -1
  11. package/dist/integrations/dataforseo/keyword-research.js +2 -8
  12. package/dist/integrations/dataforseo/keyword-research.js.map +1 -1
  13. package/dist/integrations/devto/create-article.d.ts +20 -0
  14. package/dist/integrations/devto/create-article.d.ts.map +1 -0
  15. package/dist/integrations/devto/create-article.js +67 -0
  16. package/dist/integrations/devto/create-article.js.map +1 -0
  17. package/dist/integrations/devto/credentials.d.ts +2 -0
  18. package/dist/integrations/devto/credentials.d.ts.map +1 -0
  19. package/dist/integrations/devto/credentials.js +17 -0
  20. package/dist/integrations/devto/credentials.js.map +1 -0
  21. package/dist/integrations/devto/get-articles.d.ts +21 -0
  22. package/dist/integrations/devto/get-articles.d.ts.map +1 -0
  23. package/dist/integrations/devto/get-articles.js +78 -0
  24. package/dist/integrations/devto/get-articles.js.map +1 -0
  25. package/dist/integrations/devto/index.d.ts +6 -0
  26. package/dist/integrations/devto/index.d.ts.map +1 -0
  27. package/dist/integrations/devto/index.js +6 -0
  28. package/dist/integrations/devto/index.js.map +1 -0
  29. package/dist/integrations/devto/schemas.d.ts +243 -0
  30. package/dist/integrations/devto/schemas.d.ts.map +1 -0
  31. package/dist/integrations/devto/schemas.js +69 -0
  32. package/dist/integrations/devto/schemas.js.map +1 -0
  33. package/dist/integrations/devto/update-article.d.ts +19 -0
  34. package/dist/integrations/devto/update-article.d.ts.map +1 -0
  35. package/dist/integrations/devto/update-article.js +65 -0
  36. package/dist/integrations/devto/update-article.js.map +1 -0
  37. package/dist/integrations/discord/schemas.d.ts +2 -2
  38. package/dist/integrations/discord/send-message.d.ts +1 -1
  39. package/dist/integrations/firecrawl/crawl.d.ts +121 -0
  40. package/dist/integrations/firecrawl/crawl.d.ts.map +1 -0
  41. package/dist/integrations/firecrawl/crawl.js +168 -0
  42. package/dist/integrations/firecrawl/crawl.js.map +1 -0
  43. package/dist/integrations/firecrawl/extract.d.ts +82 -0
  44. package/dist/integrations/firecrawl/extract.d.ts.map +1 -0
  45. package/dist/integrations/firecrawl/extract.js +168 -0
  46. package/dist/integrations/firecrawl/extract.js.map +1 -0
  47. package/dist/integrations/firecrawl/index.d.ts +4 -0
  48. package/dist/integrations/firecrawl/index.d.ts.map +1 -0
  49. package/dist/integrations/firecrawl/index.js +4 -0
  50. package/dist/integrations/firecrawl/index.js.map +1 -0
  51. package/dist/integrations/firecrawl/scrape.d.ts +1208 -0
  52. package/dist/integrations/firecrawl/scrape.d.ts.map +1 -0
  53. package/dist/integrations/firecrawl/scrape.js +254 -0
  54. package/dist/integrations/firecrawl/scrape.js.map +1 -0
  55. package/dist/integrations/index.d.ts +4 -1
  56. package/dist/integrations/index.d.ts.map +1 -1
  57. package/dist/integrations/index.js +7 -1
  58. package/dist/integrations/index.js.map +1 -1
  59. package/dist/integrations/social/credentials.d.ts +2 -0
  60. package/dist/integrations/social/credentials.d.ts.map +1 -0
  61. package/dist/integrations/social/credentials.js +36 -0
  62. package/dist/integrations/social/credentials.js.map +1 -0
  63. package/dist/integrations/social/index.d.ts +8 -0
  64. package/dist/integrations/social/index.d.ts.map +1 -1
  65. package/dist/integrations/social/index.js +8 -0
  66. package/dist/integrations/social/index.js.map +1 -1
  67. package/dist/integrations/social/twitter-client.d.ts +6 -0
  68. package/dist/integrations/social/twitter-client.d.ts.map +1 -0
  69. package/dist/integrations/social/twitter-client.js +140 -0
  70. package/dist/integrations/social/twitter-client.js.map +1 -0
  71. package/dist/integrations/social/twitter-create-tweet.d.ts +61 -0
  72. package/dist/integrations/social/twitter-create-tweet.d.ts.map +1 -0
  73. package/dist/integrations/social/twitter-create-tweet.js +83 -0
  74. package/dist/integrations/social/twitter-create-tweet.js.map +1 -0
  75. package/dist/integrations/social/twitter-delete-tweet.d.ts +23 -0
  76. package/dist/integrations/social/twitter-delete-tweet.d.ts.map +1 -0
  77. package/dist/integrations/social/twitter-delete-tweet.js +41 -0
  78. package/dist/integrations/social/twitter-delete-tweet.js.map +1 -0
  79. package/dist/integrations/social/twitter-get-user-by-username.d.ts +39 -0
  80. package/dist/integrations/social/twitter-get-user-by-username.d.ts.map +1 -0
  81. package/dist/integrations/social/twitter-get-user-by-username.js +56 -0
  82. package/dist/integrations/social/twitter-get-user-by-username.js.map +1 -0
  83. package/dist/integrations/social/twitter-like-tweet.d.ts +23 -0
  84. package/dist/integrations/social/twitter-like-tweet.d.ts.map +1 -0
  85. package/dist/integrations/social/twitter-like-tweet.js +48 -0
  86. package/dist/integrations/social/twitter-like-tweet.js.map +1 -0
  87. package/dist/integrations/social/twitter-retweet.d.ts +23 -0
  88. package/dist/integrations/social/twitter-retweet.d.ts.map +1 -0
  89. package/dist/integrations/social/twitter-retweet.js +48 -0
  90. package/dist/integrations/social/twitter-retweet.js.map +1 -0
  91. package/dist/integrations/social/twitter-search-tweets.d.ts +77 -0
  92. package/dist/integrations/social/twitter-search-tweets.d.ts.map +1 -0
  93. package/dist/integrations/social/twitter-search-tweets.js +76 -0
  94. package/dist/integrations/social/twitter-search-tweets.js.map +1 -0
  95. package/dist/integrations/social/twitter-send-dm.d.ts +39 -0
  96. package/dist/integrations/social/twitter-send-dm.d.ts.map +1 -0
  97. package/dist/integrations/social/twitter-send-dm.js +67 -0
  98. package/dist/integrations/social/twitter-send-dm.js.map +1 -0
  99. package/dist/integrations/wordpress/createPost.d.ts +25 -0
  100. package/dist/integrations/wordpress/createPost.d.ts.map +1 -0
  101. package/dist/integrations/wordpress/createPost.js +67 -0
  102. package/dist/integrations/wordpress/createPost.js.map +1 -0
  103. package/dist/integrations/wordpress/credentials.d.ts +2 -0
  104. package/dist/integrations/wordpress/credentials.d.ts.map +1 -0
  105. package/dist/integrations/wordpress/credentials.js +25 -0
  106. package/dist/integrations/wordpress/credentials.js.map +1 -0
  107. package/dist/integrations/wordpress/getPosts.d.ts +28 -0
  108. package/dist/integrations/wordpress/getPosts.d.ts.map +1 -0
  109. package/dist/integrations/wordpress/getPosts.js +70 -0
  110. package/dist/integrations/wordpress/getPosts.js.map +1 -0
  111. package/dist/integrations/wordpress/index.d.ts +8 -0
  112. package/dist/integrations/wordpress/index.d.ts.map +1 -0
  113. package/dist/integrations/wordpress/index.js +7 -0
  114. package/dist/integrations/wordpress/index.js.map +1 -0
  115. package/dist/integrations/wordpress/schemas.d.ts +411 -0
  116. package/dist/integrations/wordpress/schemas.d.ts.map +1 -0
  117. package/dist/integrations/wordpress/schemas.js +110 -0
  118. package/dist/integrations/wordpress/schemas.js.map +1 -0
  119. package/dist/integrations/wordpress/updatePost.d.ts +21 -0
  120. package/dist/integrations/wordpress/updatePost.d.ts.map +1 -0
  121. package/dist/integrations/wordpress/updatePost.js +59 -0
  122. package/dist/integrations/wordpress/updatePost.js.map +1 -0
  123. package/dist/integrations/wordpress/uploadMedia.d.ts +15 -0
  124. package/dist/integrations/wordpress/uploadMedia.d.ts.map +1 -0
  125. package/dist/integrations/wordpress/uploadMedia.js +56 -0
  126. package/dist/integrations/wordpress/uploadMedia.js.map +1 -0
  127. package/dist/integrations/wordpress/utils.d.ts +15 -0
  128. package/dist/integrations/wordpress/utils.d.ts.map +1 -0
  129. package/dist/integrations/wordpress/utils.js +15 -0
  130. package/dist/integrations/wordpress/utils.js.map +1 -0
  131. package/dist/schemas/ai.d.ts +20 -20
  132. 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"}