@bubblelab/bubble-core 0.1.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/LICENSE.txt +202 -0
- package/dist/bubble-bundle.d.ts +2021 -0
- package/dist/bubble-factory.d.ts +161 -0
- package/dist/bubble-factory.d.ts.map +1 -0
- package/dist/bubble-factory.js +426 -0
- package/dist/bubble-factory.js.map +1 -0
- package/dist/bubble-flow/bubble-flow-class.d.ts +19 -0
- package/dist/bubble-flow/bubble-flow-class.d.ts.map +1 -0
- package/dist/bubble-flow/bubble-flow-class.js +23 -0
- package/dist/bubble-flow/bubble-flow-class.js.map +1 -0
- package/dist/bubble-flow/sample/data-analyst-flow.d.ts +15 -0
- package/dist/bubble-flow/sample/data-analyst-flow.d.ts.map +1 -0
- package/dist/bubble-flow/sample/data-analyst-flow.js +63 -0
- package/dist/bubble-flow/sample/data-analyst-flow.js.map +1 -0
- package/dist/bubble-flow/sample/error-ts.d.ts +23 -0
- package/dist/bubble-flow/sample/error-ts.d.ts.map +1 -0
- package/dist/bubble-flow/sample/error-ts.js +31 -0
- package/dist/bubble-flow/sample/error-ts.js.map +1 -0
- package/dist/bubble-flow/sample/sanitytest.d.ts +10 -0
- package/dist/bubble-flow/sample/sanitytest.d.ts.map +1 -0
- package/dist/bubble-flow/sample/sanitytest.js +13 -0
- package/dist/bubble-flow/sample/sanitytest.js.map +1 -0
- package/dist/bubble-flow/sample/simple-webhook-2.d.ts +19 -0
- package/dist/bubble-flow/sample/simple-webhook-2.d.ts.map +1 -0
- package/dist/bubble-flow/sample/simple-webhook-2.js +23 -0
- package/dist/bubble-flow/sample/simple-webhook-2.js.map +1 -0
- package/dist/bubble-flow/sample/simple-webhook.d.ts +10 -0
- package/dist/bubble-flow/sample/simple-webhook.d.ts.map +1 -0
- package/dist/bubble-flow/sample/simple-webhook.js +18 -0
- package/dist/bubble-flow/sample/simple-webhook.js.map +1 -0
- package/dist/bubble-flow/sample/simplified-data-analysis.flow.d.ts +29 -0
- package/dist/bubble-flow/sample/simplified-data-analysis.flow.d.ts.map +1 -0
- package/dist/bubble-flow/sample/simplified-data-analysis.flow.js +150 -0
- package/dist/bubble-flow/sample/simplified-data-analysis.flow.js.map +1 -0
- package/dist/bubble-flow/sample/slack-v0.1.d.ts +10 -0
- package/dist/bubble-flow/sample/slack-v0.1.d.ts.map +1 -0
- package/dist/bubble-flow/sample/slack-v0.1.js +59 -0
- package/dist/bubble-flow/sample/slack-v0.1.js.map +1 -0
- package/dist/bubble-flow/sample/slackagenttest.d.ts +10 -0
- package/dist/bubble-flow/sample/slackagenttest.d.ts.map +1 -0
- package/dist/bubble-flow/sample/slackagenttest.js +59 -0
- package/dist/bubble-flow/sample/slackagenttest.js.map +1 -0
- package/dist/bubble-trigger/index.d.ts +2 -0
- package/dist/bubble-trigger/index.d.ts.map +1 -0
- package/dist/bubble-trigger/index.js +2 -0
- package/dist/bubble-trigger/index.js.map +1 -0
- package/dist/bubble-trigger/types.d.ts +87 -0
- package/dist/bubble-trigger/types.d.ts.map +1 -0
- package/dist/bubble-trigger/types.js +14 -0
- package/dist/bubble-trigger/types.js.map +1 -0
- package/dist/bubbles/service-bubble/ai-agent.d.ts +428 -0
- package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/ai-agent.js +881 -0
- package/dist/bubbles/service-bubble/ai-agent.js.map +1 -0
- package/dist/bubbles/service-bubble/gmail.d.ts +3073 -0
- package/dist/bubbles/service-bubble/gmail.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/gmail.js +908 -0
- package/dist/bubbles/service-bubble/gmail.js.map +1 -0
- package/dist/bubbles/service-bubble/google-calendar.d.ts +3377 -0
- package/dist/bubbles/service-bubble/google-calendar.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/google-calendar.js +527 -0
- package/dist/bubbles/service-bubble/google-calendar.js.map +1 -0
- package/dist/bubbles/service-bubble/google-drive.d.ts +1152 -0
- package/dist/bubbles/service-bubble/google-drive.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/google-drive.js +943 -0
- package/dist/bubbles/service-bubble/google-drive.js.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets.d.ts +1811 -0
- package/dist/bubbles/service-bubble/google-sheets.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets.js +904 -0
- package/dist/bubbles/service-bubble/google-sheets.js.map +1 -0
- package/dist/bubbles/service-bubble/hello-world.d.ts +74 -0
- package/dist/bubbles/service-bubble/hello-world.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/hello-world.js +67 -0
- package/dist/bubbles/service-bubble/hello-world.js.map +1 -0
- package/dist/bubbles/service-bubble/http.d.ts +134 -0
- package/dist/bubbles/service-bubble/http.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/http.js +184 -0
- package/dist/bubbles/service-bubble/http.js.map +1 -0
- package/dist/bubbles/service-bubble/postgresql.d.ts +180 -0
- package/dist/bubbles/service-bubble/postgresql.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/postgresql.js +448 -0
- package/dist/bubbles/service-bubble/postgresql.js.map +1 -0
- package/dist/bubbles/service-bubble/resend.d.ts +301 -0
- package/dist/bubbles/service-bubble/resend.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/resend.js +253 -0
- package/dist/bubbles/service-bubble/resend.js.map +1 -0
- package/dist/bubbles/service-bubble/slack.d.ts +5869 -0
- package/dist/bubbles/service-bubble/slack.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/slack.js +1536 -0
- package/dist/bubbles/service-bubble/slack.js.map +1 -0
- package/dist/bubbles/service-bubble/storage.d.ts +571 -0
- package/dist/bubbles/service-bubble/storage.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/storage.js +504 -0
- package/dist/bubbles/service-bubble/storage.js.map +1 -0
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +308 -0
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.js +285 -0
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +416 -0
- package/dist/bubbles/tool-bubble/chart-js-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/chart-js-tool.js +570 -0
- package/dist/bubbles/tool-bubble/chart-js-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +99 -0
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.js +645 -0
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +112 -0
- package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/list-bubbles-tool.js +82 -0
- package/dist/bubbles/tool-bubble/list-bubbles-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +413 -0
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.js +327 -0
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +122 -0
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/research-agent-tool.js +343 -0
- package/dist/bubbles/tool-bubble/research-agent-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +131 -0
- package/dist/bubbles/tool-bubble/sql-query-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/sql-query-tool.js +147 -0
- package/dist/bubbles/tool-bubble/sql-query-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/tool-template.d.ts +257 -0
- package/dist/bubbles/tool-bubble/tool-template.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/tool-template.js +238 -0
- package/dist/bubbles/tool-bubble/tool-template.js.map +1 -0
- package/dist/bubbles/tool-bubble/virtual-file-editor-example.d.ts +8 -0
- package/dist/bubbles/tool-bubble/virtual-file-editor-example.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/virtual-file-editor-example.js +65 -0
- package/dist/bubbles/tool-bubble/virtual-file-editor-example.js.map +1 -0
- package/dist/bubbles/tool-bubble/virtual-file-editor.tool.d.ts +125 -0
- package/dist/bubbles/tool-bubble/virtual-file-editor.tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/virtual-file-editor.tool.js +169 -0
- package/dist/bubbles/tool-bubble/virtual-file-editor.tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +218 -0
- package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/web-crawl-tool.js +255 -0
- package/dist/bubbles/tool-bubble/web-crawl-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +134 -0
- package/dist/bubbles/tool-bubble/web-extract-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/web-extract-tool.js +175 -0
- package/dist/bubbles/tool-bubble/web-extract-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +228 -0
- package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/web-scrape-tool.js +214 -0
- package/dist/bubbles/tool-bubble/web-scrape-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/web-search-tool.d.ts +134 -0
- package/dist/bubbles/tool-bubble/web-search-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/web-search-tool.js +155 -0
- package/dist/bubbles/tool-bubble/web-search-tool.js.map +1 -0
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +114 -0
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +1 -0
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +777 -0
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +1 -0
- package/dist/bubbles/workflow-bubble/bubblscript-generateor.workflow.d.ts +97 -0
- package/dist/bubbles/workflow-bubble/bubblscript-generateor.workflow.d.ts.map +1 -0
- package/dist/bubbles/workflow-bubble/bubblscript-generateor.workflow.js +327 -0
- package/dist/bubbles/workflow-bubble/bubblscript-generateor.workflow.js.map +1 -0
- package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts +303 -0
- package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts.map +1 -0
- package/dist/bubbles/workflow-bubble/database-analyzer.workflow.js +297 -0
- package/dist/bubbles/workflow-bubble/database-analyzer.workflow.js.map +1 -0
- package/dist/bubbles/workflow-bubble/file-editor-agent.workflow.d.ts +157 -0
- package/dist/bubbles/workflow-bubble/file-editor-agent.workflow.d.ts.map +1 -0
- package/dist/bubbles/workflow-bubble/file-editor-agent.workflow.js +310 -0
- package/dist/bubbles/workflow-bubble/file-editor-agent.workflow.js.map +1 -0
- package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +543 -0
- package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts.map +1 -0
- package/dist/bubbles/workflow-bubble/generate-document.workflow.js +628 -0
- package/dist/bubbles/workflow-bubble/generate-document.workflow.js.map +1 -0
- package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +679 -0
- package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts.map +1 -0
- package/dist/bubbles/workflow-bubble/parse-document.workflow.js +604 -0
- package/dist/bubbles/workflow-bubble/parse-document.workflow.js.map +1 -0
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +1011 -0
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts.map +1 -0
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.js +841 -0
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.js.map +1 -0
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +883 -0
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts.map +1 -0
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.js +781 -0
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.js.map +1 -0
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +300 -0
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts.map +1 -0
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js +508 -0
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js.map +1 -0
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +731 -0
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts.map +1 -0
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.js +690 -0
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.js.map +1 -0
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +401 -0
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts.map +1 -0
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js +382 -0
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js.map +1 -0
- package/dist/bubbles/workflow-bubble/workflow-template.d.ts +144 -0
- package/dist/bubbles/workflow-bubble/workflow-template.d.ts.map +1 -0
- package/dist/bubbles/workflow-bubble/workflow-template.js +124 -0
- package/dist/bubbles/workflow-bubble/workflow-template.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/BubbleLogger.d.ts +146 -0
- package/dist/logging/BubbleLogger.d.ts.map +1 -0
- package/dist/logging/BubbleLogger.js +472 -0
- package/dist/logging/BubbleLogger.js.map +1 -0
- package/dist/logging/StreamingBubbleLogger.d.ts +85 -0
- package/dist/logging/StreamingBubbleLogger.d.ts.map +1 -0
- package/dist/logging/StreamingBubbleLogger.js +340 -0
- package/dist/logging/StreamingBubbleLogger.js.map +1 -0
- package/dist/types/ai-models.d.ts +4 -0
- package/dist/types/ai-models.d.ts.map +1 -0
- package/dist/types/ai-models.js +14 -0
- package/dist/types/ai-models.js.map +1 -0
- package/dist/types/available-tools.d.ts +4 -0
- package/dist/types/available-tools.d.ts.map +1 -0
- package/dist/types/available-tools.js +19 -0
- package/dist/types/available-tools.js.map +1 -0
- package/dist/types/base-bubble-class.d.ts +47 -0
- package/dist/types/base-bubble-class.d.ts.map +1 -0
- package/dist/types/base-bubble-class.js +212 -0
- package/dist/types/base-bubble-class.js.map +1 -0
- package/dist/types/bubble-errors.d.ts +44 -0
- package/dist/types/bubble-errors.d.ts.map +1 -0
- package/dist/types/bubble-errors.js +51 -0
- package/dist/types/bubble-errors.js.map +1 -0
- package/dist/types/bubble.d.ts +73 -0
- package/dist/types/bubble.d.ts.map +1 -0
- package/dist/types/bubble.js +2 -0
- package/dist/types/bubble.js.map +1 -0
- package/dist/types/credentials.d.ts +6 -0
- package/dist/types/credentials.d.ts.map +1 -0
- package/dist/types/credentials.js +6 -0
- package/dist/types/credentials.js.map +1 -0
- package/dist/types/service-bubble-class.d.ts +31 -0
- package/dist/types/service-bubble-class.d.ts.map +1 -0
- package/dist/types/service-bubble-class.js +36 -0
- package/dist/types/service-bubble-class.js.map +1 -0
- package/dist/types/streaming-events.d.ts +18 -0
- package/dist/types/streaming-events.d.ts.map +1 -0
- package/dist/types/streaming-events.js +5 -0
- package/dist/types/streaming-events.js.map +1 -0
- package/dist/types/tool-bubble-class.d.ts +19 -0
- package/dist/types/tool-bubble-class.d.ts.map +1 -0
- package/dist/types/tool-bubble-class.js +48 -0
- package/dist/types/tool-bubble-class.js.map +1 -0
- package/dist/types/workflow-bubble-class.d.ts +25 -0
- package/dist/types/workflow-bubble-class.d.ts.map +1 -0
- package/dist/types/workflow-bubble-class.js +30 -0
- package/dist/types/workflow-bubble-class.js.map +1 -0
- package/dist/utils/bubbleflow-parser.d.ts +32 -0
- package/dist/utils/bubbleflow-parser.d.ts.map +1 -0
- package/dist/utils/bubbleflow-parser.js +332 -0
- package/dist/utils/bubbleflow-parser.js.map +1 -0
- package/dist/utils/bubbleflow-validation.d.ts +9 -0
- package/dist/utils/bubbleflow-validation.d.ts.map +1 -0
- package/dist/utils/bubbleflow-validation.js +116 -0
- package/dist/utils/bubbleflow-validation.js.map +1 -0
- package/dist/utils/json-parsing.d.ts +20 -0
- package/dist/utils/json-parsing.d.ts.map +1 -0
- package/dist/utils/json-parsing.js +394 -0
- package/dist/utils/json-parsing.js.map +1 -0
- package/dist/utils/mock-data-generator.d.ts +43 -0
- package/dist/utils/mock-data-generator.d.ts.map +1 -0
- package/dist/utils/mock-data-generator.js +312 -0
- package/dist/utils/mock-data-generator.js.map +1 -0
- package/dist/utils/param-helper.d.ts +2 -0
- package/dist/utils/param-helper.d.ts.map +1 -0
- package/dist/utils/param-helper.js +5 -0
- package/dist/utils/param-helper.js.map +1 -0
- package/dist/utils/source-bubble-parser.d.ts +31 -0
- package/dist/utils/source-bubble-parser.d.ts.map +1 -0
- package/dist/utils/source-bubble-parser.js +231 -0
- package/dist/utils/source-bubble-parser.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ToolBubble } from '../../types/tool-bubble-class.js';
|
|
3
|
+
import FirecrawlApp, {} from '@mendable/firecrawl-js';
|
|
4
|
+
import { CredentialType } from '@bubblelab/shared-schemas';
|
|
5
|
+
// Define the parameters schema - simplified like the MCP server
|
|
6
|
+
const WebSearchToolParamsSchema = z.object({
|
|
7
|
+
query: z
|
|
8
|
+
.string()
|
|
9
|
+
.min(1, 'Search query is required')
|
|
10
|
+
.describe('The search query to execute'),
|
|
11
|
+
limit: z
|
|
12
|
+
.number()
|
|
13
|
+
.min(1, 'Minimum number of search results to return is 1')
|
|
14
|
+
.max(4, 'Maximum number of search results to return is 4')
|
|
15
|
+
.default(3)
|
|
16
|
+
.describe('Maximum number of search results to return'),
|
|
17
|
+
location: z
|
|
18
|
+
.string()
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('Location parameter for search results (e.g., "us", "uk")'),
|
|
21
|
+
credentials: z
|
|
22
|
+
.record(z.nativeEnum(CredentialType), z.string())
|
|
23
|
+
.optional()
|
|
24
|
+
.describe('Required credentials including FIRECRAWL_API_KEY'),
|
|
25
|
+
});
|
|
26
|
+
// Result schema for validation
|
|
27
|
+
const WebSearchToolResultSchema = z.object({
|
|
28
|
+
results: z
|
|
29
|
+
.array(z.object({
|
|
30
|
+
title: z.string().describe('Title of the search result'),
|
|
31
|
+
url: z.string().url().describe('URL of the search result'),
|
|
32
|
+
content: z.string().describe('Content snippet from the search result'),
|
|
33
|
+
}))
|
|
34
|
+
.describe('Array of search results with title, URL, and content'),
|
|
35
|
+
query: z.string().describe('The original search query'),
|
|
36
|
+
totalResults: z.number().describe('Number of results returned'),
|
|
37
|
+
searchEngine: z.string().describe('Search engine used (Firecrawl)'),
|
|
38
|
+
success: z.boolean().describe('Whether the search was successful'),
|
|
39
|
+
error: z.string().describe('Error message if search failed'),
|
|
40
|
+
});
|
|
41
|
+
export class WebSearchTool extends ToolBubble {
|
|
42
|
+
// Required static metadata
|
|
43
|
+
static bubbleName = 'web-search-tool';
|
|
44
|
+
static schema = WebSearchToolParamsSchema;
|
|
45
|
+
static resultSchema = WebSearchToolResultSchema;
|
|
46
|
+
static shortDescription = 'Performs web searches using Firecrawl to find current information from the web';
|
|
47
|
+
static longDescription = `
|
|
48
|
+
A comprehensive web search tool that uses Firecrawl to find current information from the web.
|
|
49
|
+
|
|
50
|
+
Features:
|
|
51
|
+
- High-quality web search results with content extraction
|
|
52
|
+
- Configurable result limits (1-20 results)
|
|
53
|
+
- Location-based search for regional results
|
|
54
|
+
- Clean, structured content extraction from search results
|
|
55
|
+
- Requires FIRECRAWL_API_KEY credential
|
|
56
|
+
|
|
57
|
+
Use cases:
|
|
58
|
+
- Finding current events and news
|
|
59
|
+
- Researching topics with web content
|
|
60
|
+
- Getting up-to-date information for decision making
|
|
61
|
+
- Answering questions that require web knowledge
|
|
62
|
+
- Market research and competitive analysis
|
|
63
|
+
- Real-time data gathering from the web
|
|
64
|
+
`;
|
|
65
|
+
static alias = 'websearch';
|
|
66
|
+
static type = 'tool';
|
|
67
|
+
constructor(params = { query: '' }, context) {
|
|
68
|
+
super(params, context);
|
|
69
|
+
}
|
|
70
|
+
async performAction(context) {
|
|
71
|
+
void context; // Context available but not currently used
|
|
72
|
+
const { query, limit, location } = this.params;
|
|
73
|
+
try {
|
|
74
|
+
// Validate limit range
|
|
75
|
+
const limitedResults = Math.min(Math.max(limit, 1), 20);
|
|
76
|
+
// Get Firecrawl API key from credentials
|
|
77
|
+
const apiKey = this.params.credentials?.FIRECRAWL_API_KEY;
|
|
78
|
+
if (!apiKey) {
|
|
79
|
+
throw new Error('FIRECRAWL_API_KEY is required but not provided in credentials');
|
|
80
|
+
}
|
|
81
|
+
// Initialize Firecrawl client
|
|
82
|
+
const firecrawl = new FirecrawlApp({ apiKey });
|
|
83
|
+
// Build search parameters according to Firecrawl API with defaults
|
|
84
|
+
const searchOptions = {
|
|
85
|
+
limit: limitedResults,
|
|
86
|
+
// Default sources to web search
|
|
87
|
+
sources: ['web'],
|
|
88
|
+
// Default scrape options for better content extraction
|
|
89
|
+
scrapeOptions: {
|
|
90
|
+
formats: ['markdown'],
|
|
91
|
+
onlyMainContent: true,
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
// Add optional parameters if provided
|
|
95
|
+
if (location) {
|
|
96
|
+
searchOptions.location = location;
|
|
97
|
+
}
|
|
98
|
+
console.log('[WebSearchTool] Searching with params:', {
|
|
99
|
+
query,
|
|
100
|
+
...searchOptions,
|
|
101
|
+
});
|
|
102
|
+
// Execute search using Firecrawl
|
|
103
|
+
const searchResult = await firecrawl.search(query, searchOptions);
|
|
104
|
+
// Handle the response based on Firecrawl's actual API structure
|
|
105
|
+
// The search API might return different structures, so handle both cases
|
|
106
|
+
let resultsArray = [];
|
|
107
|
+
if (Array.isArray(searchResult)) {
|
|
108
|
+
resultsArray = searchResult;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
const response = searchResult;
|
|
112
|
+
if (response?.data && Array.isArray(response.data)) {
|
|
113
|
+
resultsArray = response.data;
|
|
114
|
+
}
|
|
115
|
+
else if (response?.web && Array.isArray(response.web)) {
|
|
116
|
+
resultsArray = response.web;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
throw new Error('No search results returned or unexpected response format');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// Transform Firecrawl results to our format
|
|
123
|
+
const results = resultsArray.map((item) => ({
|
|
124
|
+
title: item.title || item.name || 'No title',
|
|
125
|
+
url: item.url || item.link || '',
|
|
126
|
+
content: item.content ||
|
|
127
|
+
item.description ||
|
|
128
|
+
item.text ||
|
|
129
|
+
item.markdown ||
|
|
130
|
+
'No content available',
|
|
131
|
+
}));
|
|
132
|
+
return {
|
|
133
|
+
results,
|
|
134
|
+
query,
|
|
135
|
+
totalResults: results.length,
|
|
136
|
+
searchEngine: 'Firecrawl',
|
|
137
|
+
success: true,
|
|
138
|
+
error: '',
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
console.error('[WebSearchTool] Search error:', error);
|
|
143
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
144
|
+
return {
|
|
145
|
+
results: [],
|
|
146
|
+
query,
|
|
147
|
+
totalResults: 0,
|
|
148
|
+
searchEngine: 'Firecrawl',
|
|
149
|
+
success: false,
|
|
150
|
+
error: errorMessage,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=web-search-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-search-tool.js","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/web-search-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SIMPLE BUBBLEFLOW GENERATOR WORKFLOW
|
|
3
|
+
*
|
|
4
|
+
* A simplified BubbleFlow generator that uses AI agent with tools to generate
|
|
5
|
+
* and validate BubbleFlow code from natural language prompts.
|
|
6
|
+
*
|
|
7
|
+
* Much simpler than the complex workflow - just AI + validation tool!
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import { WorkflowBubble } from '../../types/workflow-bubble-class.js';
|
|
11
|
+
import type { BubbleContext } from '../../types/bubble.js';
|
|
12
|
+
import { CredentialType } from '@bubblelab/shared-schemas';
|
|
13
|
+
import { type StreamingCallback } from '../service-bubble/ai-agent.js';
|
|
14
|
+
/**
|
|
15
|
+
* Parameters schema for the simple BubbleFlow generator
|
|
16
|
+
*/
|
|
17
|
+
declare const BubbleFlowGeneratorParamsSchema: z.ZodObject<{
|
|
18
|
+
prompt: z.ZodString;
|
|
19
|
+
credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>;
|
|
20
|
+
}, "strip", z.ZodTypeAny, {
|
|
21
|
+
prompt: string;
|
|
22
|
+
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
23
|
+
}, {
|
|
24
|
+
prompt: string;
|
|
25
|
+
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* Result schema
|
|
29
|
+
*/
|
|
30
|
+
declare const BubbleFlowGeneratorResultSchema: z.ZodObject<{
|
|
31
|
+
generatedCode: z.ZodString;
|
|
32
|
+
isValid: z.ZodBoolean;
|
|
33
|
+
success: z.ZodBoolean;
|
|
34
|
+
error: z.ZodString;
|
|
35
|
+
toolCalls: z.ZodArray<z.ZodAny, "many">;
|
|
36
|
+
summary: z.ZodDefault<z.ZodString>;
|
|
37
|
+
inputsSchema: z.ZodDefault<z.ZodString>;
|
|
38
|
+
}, "strip", z.ZodTypeAny, {
|
|
39
|
+
success: boolean;
|
|
40
|
+
error: string;
|
|
41
|
+
toolCalls: any[];
|
|
42
|
+
summary: string;
|
|
43
|
+
generatedCode: string;
|
|
44
|
+
isValid: boolean;
|
|
45
|
+
inputsSchema: string;
|
|
46
|
+
}, {
|
|
47
|
+
success: boolean;
|
|
48
|
+
error: string;
|
|
49
|
+
toolCalls: any[];
|
|
50
|
+
generatedCode: string;
|
|
51
|
+
isValid: boolean;
|
|
52
|
+
summary?: string | undefined;
|
|
53
|
+
inputsSchema?: string | undefined;
|
|
54
|
+
}>;
|
|
55
|
+
type BubbleFlowGeneratorParams = z.output<typeof BubbleFlowGeneratorParamsSchema>;
|
|
56
|
+
type BubbleFlowGeneratorResult = z.output<typeof BubbleFlowGeneratorResultSchema>;
|
|
57
|
+
/**
|
|
58
|
+
* Simple BubbleFlow Generator using AI agent with tools
|
|
59
|
+
*/
|
|
60
|
+
export declare class BubbleFlowGeneratorWorkflow extends WorkflowBubble<BubbleFlowGeneratorParams, BubbleFlowGeneratorResult> {
|
|
61
|
+
static readonly type: "workflow";
|
|
62
|
+
static readonly bubbleName = "bubbleflow-generator";
|
|
63
|
+
static readonly schema: z.ZodObject<{
|
|
64
|
+
prompt: z.ZodString;
|
|
65
|
+
credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>;
|
|
66
|
+
}, "strip", z.ZodTypeAny, {
|
|
67
|
+
prompt: string;
|
|
68
|
+
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
69
|
+
}, {
|
|
70
|
+
prompt: string;
|
|
71
|
+
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
72
|
+
}>;
|
|
73
|
+
static readonly resultSchema: z.ZodObject<{
|
|
74
|
+
generatedCode: z.ZodString;
|
|
75
|
+
isValid: z.ZodBoolean;
|
|
76
|
+
success: z.ZodBoolean;
|
|
77
|
+
error: z.ZodString;
|
|
78
|
+
toolCalls: z.ZodArray<z.ZodAny, "many">;
|
|
79
|
+
summary: z.ZodDefault<z.ZodString>;
|
|
80
|
+
inputsSchema: z.ZodDefault<z.ZodString>;
|
|
81
|
+
}, "strip", z.ZodTypeAny, {
|
|
82
|
+
success: boolean;
|
|
83
|
+
error: string;
|
|
84
|
+
toolCalls: any[];
|
|
85
|
+
summary: string;
|
|
86
|
+
generatedCode: string;
|
|
87
|
+
isValid: boolean;
|
|
88
|
+
inputsSchema: string;
|
|
89
|
+
}, {
|
|
90
|
+
success: boolean;
|
|
91
|
+
error: string;
|
|
92
|
+
toolCalls: any[];
|
|
93
|
+
generatedCode: string;
|
|
94
|
+
isValid: boolean;
|
|
95
|
+
summary?: string | undefined;
|
|
96
|
+
inputsSchema?: string | undefined;
|
|
97
|
+
}>;
|
|
98
|
+
static readonly shortDescription = "Generate BubbleFlow code from natural language";
|
|
99
|
+
static readonly longDescription = "\n Simple BubbleFlow generator that uses AI with validation tools.\n \n Just provide a natural language prompt describing what you want your BubbleFlow to do,\n and it will generate complete TypeScript code with proper validation.\n \n Example prompts:\n - \"Create a flow that queries my database and sends results to Slack\"\n - \"Build a workflow that processes user data with AI and stores it\"\n - \"Make a flow that analyzes text and generates a summary\"\n ";
|
|
100
|
+
static readonly alias = "generate-flow";
|
|
101
|
+
private bubbleFactory;
|
|
102
|
+
constructor(params: z.input<typeof BubbleFlowGeneratorParamsSchema>, context?: BubbleContext);
|
|
103
|
+
private runValidationAgent;
|
|
104
|
+
private runSummarizeAgent;
|
|
105
|
+
private createSystemPrompt;
|
|
106
|
+
private createStreamingSystemPrompt;
|
|
107
|
+
protected performAction(context?: BubbleContext): Promise<BubbleFlowGeneratorResult>;
|
|
108
|
+
/**
|
|
109
|
+
* Execute the workflow with streaming support for real-time code generation feedback
|
|
110
|
+
*/
|
|
111
|
+
actionWithStreaming(streamingCallback: StreamingCallback, context?: BubbleContext): Promise<BubbleFlowGeneratorResult>;
|
|
112
|
+
}
|
|
113
|
+
export {};
|
|
114
|
+
//# sourceMappingURL=bubbleflow-generator.workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bubbleflow-generator.workflow.d.ts","sourceRoot":"","sources":["../../../src/bubbles/workflow-bubble/bubbleflow-generator.workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAiCvC;;GAEG;AACH,QAAA,MAAM,+BAA+B;;;;;;;;;EAUnC,CAAC;AAEH;;GAEG;AACH,QAAA,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;EAgBnC,CAAC;AAEH,KAAK,yBAAyB,GAAG,CAAC,CAAC,MAAM,CACvC,OAAO,+BAA+B,CACvC,CAAC;AACF,KAAK,yBAAyB,GAAG,CAAC,CAAC,MAAM,CACvC,OAAO,+BAA+B,CACvC,CAAC;AA0DF;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,cAAc,CAC7D,yBAAyB,EACzB,yBAAyB,CAC1B;IACC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IAC3C,MAAM,CAAC,QAAQ,CAAC,UAAU,0BAA0B;IACpD,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;OAAmC;IACzD,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;OAAmC;IAC/D,MAAM,CAAC,QAAQ,CAAC,gBAAgB,oDACmB;IACnD,MAAM,CAAC,QAAQ,CAAC,eAAe,kfAU7B;IACF,MAAM,CAAC,QAAQ,CAAC,KAAK,mBAAmB;IAExC,OAAO,CAAC,aAAa,CAAgB;gBAGnC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,EACvD,OAAO,CAAC,EAAE,aAAa;YAMX,kBAAkB;YAmHlB,iBAAiB;IAkF/B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,2BAA2B;cAmBnB,aAAa,CAC3B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,yBAAyB,CAAC;IAiPrC;;OAEG;IACU,mBAAmB,CAC9B,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,yBAAyB,CAAC;CAiXtC"}
|