@bubblelab/bubble-core 0.1.10 → 0.1.11
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/bubble-bundle.d.ts +759 -350
- package/dist/bubble-factory.d.ts.map +1 -1
- package/dist/bubble-factory.js +125 -35
- package/dist/bubble-factory.js.map +1 -1
- package/dist/bubble-flow/bubble-flow-class.d.ts +5 -0
- package/dist/bubble-flow/bubble-flow-class.d.ts.map +1 -1
- package/dist/bubble-flow/bubble-flow-class.js +20 -0
- package/dist/bubble-flow/bubble-flow-class.js.map +1 -1
- package/dist/bubble-flow/sample/simplified-data-analysis.flow.d.ts.map +1 -1
- package/dist/bubble-flow/sample/simplified-data-analysis.flow.js +6 -3
- package/dist/bubble-flow/sample/simplified-data-analysis.flow.js.map +1 -1
- package/dist/bubbles/service-bubble/agi-inc.d.ts +1121 -0
- package/dist/bubbles/service-bubble/agi-inc.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/agi-inc.js +730 -0
- package/dist/bubbles/service-bubble/agi-inc.js.map +1 -0
- package/dist/bubbles/service-bubble/ai-agent.d.ts +277 -65
- package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/ai-agent.js +533 -399
- package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
- package/dist/bubbles/service-bubble/airtable.d.ts +1753 -0
- package/dist/bubbles/service-bubble/airtable.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/airtable.js +1173 -0
- package/dist/bubbles/service-bubble/airtable.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts +240 -0
- package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.js +119 -0
- package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +4 -4
- package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +14 -14
- package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts +137 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.js +81 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +6 -6
- package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +32 -32
- package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +488 -0
- package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.js +463 -0
- package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +262 -0
- package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.js +291 -0
- package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +12 -12
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +1301 -170
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js +32 -0
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js.map +1 -1
- package/dist/bubbles/service-bubble/apify/apify.d.ts +162 -17
- package/dist/bubbles/service-bubble/apify/apify.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/apify/apify.js +205 -32
- package/dist/bubbles/service-bubble/apify/apify.js.map +1 -1
- package/dist/bubbles/service-bubble/eleven-labs.d.ts +421 -0
- package/dist/bubbles/service-bubble/eleven-labs.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/eleven-labs.js +479 -0
- package/dist/bubbles/service-bubble/eleven-labs.js.map +1 -0
- package/dist/bubbles/service-bubble/firecrawl.d.ts +37748 -0
- package/dist/bubbles/service-bubble/firecrawl.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/firecrawl.js +1489 -0
- package/dist/bubbles/service-bubble/firecrawl.js.map +1 -0
- package/dist/bubbles/service-bubble/followupboss.d.ts +6822 -0
- package/dist/bubbles/service-bubble/followupboss.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/followupboss.js +1394 -0
- package/dist/bubbles/service-bubble/followupboss.js.map +1 -0
- package/dist/bubbles/service-bubble/github.d.ts +2399 -0
- package/dist/bubbles/service-bubble/github.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/github.js +1052 -0
- package/dist/bubbles/service-bubble/github.js.map +1 -0
- package/dist/bubbles/service-bubble/gmail.d.ts +180 -180
- package/dist/bubbles/service-bubble/google-calendar.d.ts +60 -60
- package/dist/bubbles/service-bubble/google-drive.d.ts +37 -36
- package/dist/bubbles/service-bubble/google-drive.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/google-drive.js +35 -3
- package/dist/bubbles/service-bubble/google-drive.js.map +1 -1
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +943 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.d.ts +31 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.js +184 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.js.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.js +401 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.js.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts +1024 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/{google-sheets.js → google-sheets/google-sheets.schema.js} +45 -409
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.utils.d.ts +38 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.utils.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.utils.js +183 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.utils.js.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/index.d.ts +4 -0
- package/dist/bubbles/service-bubble/google-sheets/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/index.js +4 -0
- package/dist/bubbles/service-bubble/google-sheets/index.js.map +1 -0
- package/dist/bubbles/service-bubble/hello-world.d.ts +4 -4
- package/dist/bubbles/service-bubble/http.d.ts +4 -4
- package/dist/bubbles/service-bubble/http.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/http.js +7 -1
- package/dist/bubbles/service-bubble/http.js.map +1 -1
- package/dist/bubbles/service-bubble/insforge-db.d.ts +140 -0
- package/dist/bubbles/service-bubble/insforge-db.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/insforge-db.js +260 -0
- package/dist/bubbles/service-bubble/insforge-db.js.map +1 -0
- package/dist/bubbles/service-bubble/notion/index.d.ts +3 -0
- package/dist/bubbles/service-bubble/notion/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/notion/index.js +3 -0
- package/dist/bubbles/service-bubble/notion/index.js.map +1 -0
- package/dist/bubbles/service-bubble/notion/notion.d.ts +35405 -0
- package/dist/bubbles/service-bubble/notion/notion.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/notion/notion.js +1492 -0
- package/dist/bubbles/service-bubble/notion/notion.js.map +1 -0
- package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +1148 -0
- package/dist/bubbles/service-bubble/notion/property-schemas.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/notion/property-schemas.js +341 -0
- package/dist/bubbles/service-bubble/notion/property-schemas.js.map +1 -0
- package/dist/bubbles/service-bubble/postgresql.d.ts +12 -12
- package/dist/bubbles/service-bubble/resend.d.ts +34 -13
- package/dist/bubbles/service-bubble/resend.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/resend.js +133 -2
- package/dist/bubbles/service-bubble/resend.js.map +1 -1
- package/dist/bubbles/service-bubble/slack.d.ts +241 -241
- package/dist/bubbles/service-bubble/slack.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/slack.js +2 -2
- package/dist/bubbles/service-bubble/slack.js.map +1 -1
- package/dist/bubbles/service-bubble/storage.d.ts +25 -21
- package/dist/bubbles/service-bubble/storage.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/storage.js +43 -2
- package/dist/bubbles/service-bubble/storage.js.map +1 -1
- package/dist/bubbles/service-bubble/telegram.d.ts +7742 -0
- package/dist/bubbles/service-bubble/telegram.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/telegram.js +1132 -0
- package/dist/bubbles/service-bubble/telegram.js.map +1 -0
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +76 -20
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.js +12 -0
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +14 -14
- package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +188 -0
- package/dist/bubbles/tool-bubble/code-edit-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/code-edit-tool.js +321 -0
- package/dist/bubbles/tool-bubble/code-edit-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +8 -4
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.js +115 -10
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +455 -0
- package/dist/bubbles/tool-bubble/google-maps-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/google-maps-tool.js +205 -0
- package/dist/bubbles/tool-bubble/google-maps-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/instagram-tool.d.ts +36 -36
- package/dist/bubbles/tool-bubble/instagram-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/instagram-tool.js +2 -2
- package/dist/bubbles/tool-bubble/instagram-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +824 -447
- package/dist/bubbles/tool-bubble/linkedin-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/linkedin-tool.js +232 -12
- package/dist/bubbles/tool-bubble/linkedin-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +66 -66
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +17 -16
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/research-agent-tool.js +26 -16
- package/dist/bubbles/tool-bubble/research-agent-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +485 -0
- package/dist/bubbles/tool-bubble/tiktok-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/tiktok-tool.js +226 -0
- package/dist/bubbles/tool-bubble/tiktok-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/tool-template.d.ts +8 -8
- package/dist/bubbles/tool-bubble/twitter-tool.d.ts +947 -0
- package/dist/bubbles/tool-bubble/twitter-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/twitter-tool.js +494 -0
- package/dist/bubbles/tool-bubble/twitter-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +22 -16
- package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/web-crawl-tool.js +58 -59
- package/dist/bubbles/tool-bubble/web-crawl-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/web-extract-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/web-extract-tool.js +17 -17
- package/dist/bubbles/tool-bubble/web-extract-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +15 -107
- package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/web-scrape-tool.js +51 -72
- package/dist/bubbles/tool-bubble/web-scrape-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/web-search-tool.d.ts +20 -9
- package/dist/bubbles/tool-bubble/web-search-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/web-search-tool.js +45 -35
- package/dist/bubbles/tool-bubble/web-search-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/youtube-tool.d.ts +25 -25
- package/dist/bubbles/tool-bubble/youtube-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/youtube-tool.js +5 -5
- package/dist/bubbles/tool-bubble/youtube-tool.js.map +1 -1
- package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts +4 -4
- package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +30 -30
- package/dist/bubbles/workflow-bubble/generate-document.workflow.js +1 -1
- package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +22 -22
- package/dist/bubbles/workflow-bubble/parse-document.workflow.js +1 -1
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +54 -54
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts.map +1 -1
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.js +4 -4
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.js.map +1 -1
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +36 -36
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.js +1 -1
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +14 -14
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js +6 -6
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +26 -26
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.js +24 -4
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.js.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +19 -19
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js +8 -8
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js.map +1 -1
- package/dist/bubbles.json +220 -72
- package/dist/index.d.ts +23 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/dist/logging/BubbleLogger.d.ts +45 -16
- package/dist/logging/BubbleLogger.d.ts.map +1 -1
- package/dist/logging/BubbleLogger.js +178 -77
- package/dist/logging/BubbleLogger.js.map +1 -1
- package/dist/logging/StreamingBubbleLogger.d.ts +13 -1
- package/dist/logging/StreamingBubbleLogger.d.ts.map +1 -1
- package/dist/logging/StreamingBubbleLogger.js +51 -8
- package/dist/logging/StreamingBubbleLogger.js.map +1 -1
- package/dist/logging/WebhookStreamLogger.d.ts +66 -0
- package/dist/logging/WebhookStreamLogger.d.ts.map +1 -0
- package/dist/logging/WebhookStreamLogger.js +291 -0
- package/dist/logging/WebhookStreamLogger.js.map +1 -0
- package/dist/types/available-tools.d.ts +1 -1
- package/dist/types/available-tools.d.ts.map +1 -1
- package/dist/types/available-tools.js +1 -0
- package/dist/types/available-tools.js.map +1 -1
- package/dist/types/base-bubble-class.d.ts +6 -4
- package/dist/types/base-bubble-class.d.ts.map +1 -1
- package/dist/types/base-bubble-class.js +35 -20
- package/dist/types/base-bubble-class.js.map +1 -1
- package/dist/types/bubble.d.ts +2 -0
- package/dist/types/bubble.d.ts.map +1 -1
- package/dist/types/service-bubble-class.d.ts +1 -1
- package/dist/types/service-bubble-class.d.ts.map +1 -1
- package/dist/types/service-bubble-class.js +2 -2
- package/dist/types/service-bubble-class.js.map +1 -1
- package/dist/types/tool-bubble-class.d.ts +1 -1
- package/dist/types/tool-bubble-class.d.ts.map +1 -1
- package/dist/types/tool-bubble-class.js +2 -2
- package/dist/types/tool-bubble-class.js.map +1 -1
- package/dist/types/workflow-bubble-class.d.ts +1 -1
- package/dist/types/workflow-bubble-class.d.ts.map +1 -1
- package/dist/types/workflow-bubble-class.js +2 -2
- package/dist/types/workflow-bubble-class.js.map +1 -1
- package/dist/utils/agent-formatter.d.ts +14 -2
- package/dist/utils/agent-formatter.d.ts.map +1 -1
- package/dist/utils/agent-formatter.js +174 -26
- package/dist/utils/agent-formatter.js.map +1 -1
- package/dist/utils/bubbleflow-validation.d.ts +7 -0
- package/dist/utils/bubbleflow-validation.d.ts.map +1 -1
- package/dist/utils/bubbleflow-validation.js +171 -6
- package/dist/utils/bubbleflow-validation.js.map +1 -1
- package/dist/utils/json-parsing.d.ts.map +1 -1
- package/dist/utils/json-parsing.js +146 -0
- package/dist/utils/json-parsing.js.map +1 -1
- package/dist/utils/safe-gemini-chat.d.ts +31 -0
- package/dist/utils/safe-gemini-chat.d.ts.map +1 -0
- package/dist/utils/safe-gemini-chat.js +93 -0
- package/dist/utils/safe-gemini-chat.js.map +1 -0
- package/dist/utils/schema-comparison.d.ts +92 -0
- package/dist/utils/schema-comparison.d.ts.map +1 -0
- package/dist/utils/schema-comparison.js +716 -0
- package/dist/utils/schema-comparison.js.map +1 -0
- package/dist/utils/zod-schema.d.ts +24 -0
- package/dist/utils/zod-schema.d.ts.map +1 -0
- package/dist/utils/zod-schema.js +56 -0
- package/dist/utils/zod-schema.js.map +1 -0
- package/package.json +5 -4
- package/dist/bubbles/service-bubble/google-sheets.d.ts +0 -1811
- package/dist/bubbles/service-bubble/google-sheets.d.ts.map +0 -1
- package/dist/bubbles/service-bubble/google-sheets.js.map +0 -1
- package/dist/bubbles/service-bubble/x-twitter.d.ts +0 -814
- package/dist/bubbles/service-bubble/x-twitter.d.ts.map +0 -1
- package/dist/bubbles/service-bubble/x-twitter.js +0 -445
- package/dist/bubbles/service-bubble/x-twitter.js.map +0 -1
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +0 -125
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +0 -1
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +0 -808
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +0 -1
- package/dist/test-gm.d.ts +0 -10
- package/dist/test-gm.d.ts.map +0 -1
- package/dist/test-gm.js +0 -95
- package/dist/test-gm.js.map +0 -1
- package/dist/utils/param-helper.d.ts +0 -2
- package/dist/utils/param-helper.d.ts.map +0 -1
- package/dist/utils/param-helper.js +0 -5
- package/dist/utils/param-helper.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"x-twitter.d.ts","sourceRoot":"","sources":["../../../src/bubbles/service-bubble/x-twitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,445 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { ServiceBubble } from '../../types/service-bubble-class.js';
|
|
3
|
-
import { CredentialType } from '@bubblelab/shared-schemas';
|
|
4
|
-
// Define tweet schema
|
|
5
|
-
const TweetSchema = z
|
|
6
|
-
.object({
|
|
7
|
-
id: z.string().describe('Unique tweet identifier'),
|
|
8
|
-
text: z.string().describe('Tweet content'),
|
|
9
|
-
author_id: z.string().optional().describe('Author user ID'),
|
|
10
|
-
created_at: z
|
|
11
|
-
.string()
|
|
12
|
-
.optional()
|
|
13
|
-
.describe('Creation time in ISO 8601 format'),
|
|
14
|
-
public_metrics: z
|
|
15
|
-
.object({
|
|
16
|
-
retweet_count: z.number().optional(),
|
|
17
|
-
like_count: z.number().optional(),
|
|
18
|
-
reply_count: z.number().optional(),
|
|
19
|
-
quote_count: z.number().optional(),
|
|
20
|
-
})
|
|
21
|
-
.optional()
|
|
22
|
-
.describe('Public engagement metrics'),
|
|
23
|
-
})
|
|
24
|
-
.describe('X (Twitter) tweet metadata');
|
|
25
|
-
// Define user schema
|
|
26
|
-
const UserSchema = z
|
|
27
|
-
.object({
|
|
28
|
-
id: z.string().describe('Unique user identifier'),
|
|
29
|
-
name: z.string().describe('User display name'),
|
|
30
|
-
username: z.string().describe('User handle (without @)'),
|
|
31
|
-
description: z.string().optional().describe('User bio'),
|
|
32
|
-
public_metrics: z
|
|
33
|
-
.object({
|
|
34
|
-
followers_count: z.number().optional(),
|
|
35
|
-
following_count: z.number().optional(),
|
|
36
|
-
tweet_count: z.number().optional(),
|
|
37
|
-
listed_count: z.number().optional(),
|
|
38
|
-
})
|
|
39
|
-
.optional()
|
|
40
|
-
.describe('Public user metrics'),
|
|
41
|
-
verified: z.boolean().optional().describe('Whether user is verified'),
|
|
42
|
-
})
|
|
43
|
-
.describe('X (Twitter) user metadata');
|
|
44
|
-
// Define the parameters schema for X Twitter operations
|
|
45
|
-
const XTwitterParamsSchema = z.discriminatedUnion('operation', [
|
|
46
|
-
// Post tweet operation
|
|
47
|
-
z.object({
|
|
48
|
-
operation: z.literal('post_tweet').describe('Post a new tweet'),
|
|
49
|
-
text: z
|
|
50
|
-
.string()
|
|
51
|
-
.min(1, 'Tweet text is required')
|
|
52
|
-
.max(280, 'Tweet text cannot exceed 280 characters')
|
|
53
|
-
.describe('Tweet content (max 280 characters)'),
|
|
54
|
-
reply_to_tweet_id: z
|
|
55
|
-
.string()
|
|
56
|
-
.optional()
|
|
57
|
-
.describe('ID of tweet to reply to (for replies)'),
|
|
58
|
-
credentials: z
|
|
59
|
-
.record(z.nativeEnum(CredentialType), z.string())
|
|
60
|
-
.optional()
|
|
61
|
-
.describe('Object mapping credential types to values (injected at runtime)'),
|
|
62
|
-
}),
|
|
63
|
-
// Get tweet operation
|
|
64
|
-
z.object({
|
|
65
|
-
operation: z.literal('get_tweet').describe('Get a tweet by ID'),
|
|
66
|
-
tweet_id: z
|
|
67
|
-
.string()
|
|
68
|
-
.min(1, 'Tweet ID is required')
|
|
69
|
-
.describe('X (Twitter) tweet ID'),
|
|
70
|
-
credentials: z
|
|
71
|
-
.record(z.nativeEnum(CredentialType), z.string())
|
|
72
|
-
.optional()
|
|
73
|
-
.describe('Object mapping credential types to values (injected at runtime)'),
|
|
74
|
-
}),
|
|
75
|
-
// Get user info operation
|
|
76
|
-
z.object({
|
|
77
|
-
operation: z
|
|
78
|
-
.literal('get_user_info')
|
|
79
|
-
.describe('Get user information by username or ID'),
|
|
80
|
-
username: z.string().optional().describe('Username (without @) to look up'),
|
|
81
|
-
user_id: z.string().optional().describe('User ID to look up'),
|
|
82
|
-
credentials: z
|
|
83
|
-
.record(z.nativeEnum(CredentialType), z.string())
|
|
84
|
-
.optional()
|
|
85
|
-
.describe('Object mapping credential types to values (injected at runtime)'),
|
|
86
|
-
}),
|
|
87
|
-
// Get user tweets operation
|
|
88
|
-
z.object({
|
|
89
|
-
operation: z
|
|
90
|
-
.literal('get_user_tweets')
|
|
91
|
-
.describe("Get a user's recent tweets"),
|
|
92
|
-
username: z
|
|
93
|
-
.string()
|
|
94
|
-
.optional()
|
|
95
|
-
.describe('Username (without @) to get tweets for'),
|
|
96
|
-
user_id: z.string().optional().describe('User ID to get tweets for'),
|
|
97
|
-
max_results: z
|
|
98
|
-
.number()
|
|
99
|
-
.min(1)
|
|
100
|
-
.max(100)
|
|
101
|
-
.optional()
|
|
102
|
-
.default(10)
|
|
103
|
-
.describe('Maximum number of tweets to return (1-100)'),
|
|
104
|
-
credentials: z
|
|
105
|
-
.record(z.nativeEnum(CredentialType), z.string())
|
|
106
|
-
.optional()
|
|
107
|
-
.describe('Object mapping credential types to values (injected at runtime)'),
|
|
108
|
-
}),
|
|
109
|
-
]);
|
|
110
|
-
// Define result schemas for different operations
|
|
111
|
-
const XTwitterResultSchema = z.discriminatedUnion('operation', [
|
|
112
|
-
z.object({
|
|
113
|
-
operation: z.literal('post_tweet').describe('Post a new tweet'),
|
|
114
|
-
success: z.boolean().describe('Whether the tweet was posted successfully'),
|
|
115
|
-
tweet: TweetSchema.optional().describe('Posted tweet metadata'),
|
|
116
|
-
error: z.string().describe('Error message if operation failed'),
|
|
117
|
-
}),
|
|
118
|
-
z.object({
|
|
119
|
-
operation: z.literal('get_tweet').describe('Get a tweet by ID'),
|
|
120
|
-
success: z
|
|
121
|
-
.boolean()
|
|
122
|
-
.describe('Whether the tweet was retrieved successfully'),
|
|
123
|
-
tweet: TweetSchema.optional().describe('Tweet metadata'),
|
|
124
|
-
error: z.string().describe('Error message if operation failed'),
|
|
125
|
-
}),
|
|
126
|
-
z.object({
|
|
127
|
-
operation: z.literal('get_user_info').describe('Get user information'),
|
|
128
|
-
success: z
|
|
129
|
-
.boolean()
|
|
130
|
-
.describe('Whether the user info was retrieved successfully'),
|
|
131
|
-
user: UserSchema.optional().describe('User metadata'),
|
|
132
|
-
error: z.string().describe('Error message if operation failed'),
|
|
133
|
-
}),
|
|
134
|
-
z.object({
|
|
135
|
-
operation: z.literal('get_user_tweets').describe("Get a user's tweets"),
|
|
136
|
-
success: z
|
|
137
|
-
.boolean()
|
|
138
|
-
.describe('Whether the tweets were retrieved successfully'),
|
|
139
|
-
tweets: z.array(TweetSchema).optional().describe('List of tweets'),
|
|
140
|
-
total_count: z
|
|
141
|
-
.number()
|
|
142
|
-
.optional()
|
|
143
|
-
.describe('Total number of tweets returned'),
|
|
144
|
-
error: z.string().describe('Error message if operation failed'),
|
|
145
|
-
}),
|
|
146
|
-
]);
|
|
147
|
-
export class XTwitterBubble extends ServiceBubble {
|
|
148
|
-
static type = 'service';
|
|
149
|
-
static service = 'x-twitter';
|
|
150
|
-
static authType = 'oauth';
|
|
151
|
-
static bubbleName = 'x-twitter';
|
|
152
|
-
static schema = XTwitterParamsSchema;
|
|
153
|
-
static resultSchema = XTwitterResultSchema;
|
|
154
|
-
static shortDescription = 'X (Twitter) integration for social media';
|
|
155
|
-
static longDescription = `
|
|
156
|
-
X (Twitter) service integration for social media operations.
|
|
157
|
-
Use cases:
|
|
158
|
-
- Post tweets
|
|
159
|
-
- Read tweets by ID
|
|
160
|
-
- Get user information
|
|
161
|
-
- Get user's recent tweets
|
|
162
|
-
|
|
163
|
-
Security Features:
|
|
164
|
-
- OAuth 2.0 authentication with X (Twitter)
|
|
165
|
-
- Scoped access permissions
|
|
166
|
-
- Secure token handling
|
|
167
|
-
`;
|
|
168
|
-
static alias = 'twitter';
|
|
169
|
-
constructor(params = {
|
|
170
|
-
operation: 'get_user_info',
|
|
171
|
-
}, context) {
|
|
172
|
-
super(params, context);
|
|
173
|
-
}
|
|
174
|
-
async testCredential() {
|
|
175
|
-
const credential = this.chooseCredential();
|
|
176
|
-
if (!credential) {
|
|
177
|
-
throw new Error('X (Twitter) credentials are required');
|
|
178
|
-
}
|
|
179
|
-
try {
|
|
180
|
-
// Test the credentials by making a simple API call
|
|
181
|
-
const response = await fetch('https://api.twitter.com/2/users/me?user.fields=id,name,username', {
|
|
182
|
-
headers: {
|
|
183
|
-
Authorization: `Bearer ${credential}`,
|
|
184
|
-
'Content-Type': 'application/json',
|
|
185
|
-
},
|
|
186
|
-
});
|
|
187
|
-
return response.ok;
|
|
188
|
-
}
|
|
189
|
-
catch {
|
|
190
|
-
return false;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
async makeTwitterApiRequest(endpoint, method = 'GET', body) {
|
|
194
|
-
const url = endpoint.startsWith('https://')
|
|
195
|
-
? endpoint
|
|
196
|
-
: `https://api.twitter.com/2${endpoint}`;
|
|
197
|
-
const requestHeaders = {
|
|
198
|
-
Authorization: `Bearer ${this.chooseCredential()}`,
|
|
199
|
-
'Content-Type': 'application/json',
|
|
200
|
-
};
|
|
201
|
-
const requestInit = {
|
|
202
|
-
method,
|
|
203
|
-
headers: requestHeaders,
|
|
204
|
-
};
|
|
205
|
-
if (body && method === 'POST') {
|
|
206
|
-
requestInit.body = JSON.stringify(body);
|
|
207
|
-
}
|
|
208
|
-
const response = await fetch(url, requestInit);
|
|
209
|
-
if (!response.ok) {
|
|
210
|
-
const errorText = await response.text();
|
|
211
|
-
throw new Error(`X (Twitter) API error: ${response.status} ${response.statusText} - ${errorText}`);
|
|
212
|
-
}
|
|
213
|
-
return await response.json();
|
|
214
|
-
}
|
|
215
|
-
async performAction(context) {
|
|
216
|
-
void context;
|
|
217
|
-
const { operation } = this.params;
|
|
218
|
-
try {
|
|
219
|
-
const result = await (async () => {
|
|
220
|
-
switch (operation) {
|
|
221
|
-
case 'post_tweet':
|
|
222
|
-
return await this.postTweet(this.params);
|
|
223
|
-
case 'get_tweet':
|
|
224
|
-
return await this.getTweet(this.params);
|
|
225
|
-
case 'get_user_info':
|
|
226
|
-
return await this.getUserInfo(this.params);
|
|
227
|
-
case 'get_user_tweets':
|
|
228
|
-
return await this.getUserTweets(this.params);
|
|
229
|
-
default:
|
|
230
|
-
throw new Error(`Unsupported operation: ${operation}`);
|
|
231
|
-
}
|
|
232
|
-
})();
|
|
233
|
-
return result;
|
|
234
|
-
}
|
|
235
|
-
catch (error) {
|
|
236
|
-
return {
|
|
237
|
-
operation,
|
|
238
|
-
success: false,
|
|
239
|
-
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
240
|
-
};
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
async postTweet(params) {
|
|
244
|
-
try {
|
|
245
|
-
const { text, reply_to_tweet_id } = params;
|
|
246
|
-
const requestBody = {
|
|
247
|
-
text,
|
|
248
|
-
};
|
|
249
|
-
if (reply_to_tweet_id) {
|
|
250
|
-
requestBody.reply = {
|
|
251
|
-
in_reply_to_tweet_id: reply_to_tweet_id,
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
const response = await this.makeTwitterApiRequest('/tweets', 'POST', requestBody);
|
|
255
|
-
// Fetch the created tweet details with all fields
|
|
256
|
-
const tweetId = response.data.id;
|
|
257
|
-
const tweetResponse = await this.makeTwitterApiRequest(`/tweets/${tweetId}?tweet.fields=created_at,public_metrics,author_id&expansions=author_id&user.fields=id`);
|
|
258
|
-
const tweetData = tweetResponse.data;
|
|
259
|
-
return {
|
|
260
|
-
operation: 'post_tweet',
|
|
261
|
-
success: true,
|
|
262
|
-
tweet: {
|
|
263
|
-
id: tweetData.id,
|
|
264
|
-
text: tweetData.text,
|
|
265
|
-
author_id: tweetData.author_id,
|
|
266
|
-
created_at: tweetData.created_at,
|
|
267
|
-
public_metrics: tweetData.public_metrics,
|
|
268
|
-
},
|
|
269
|
-
error: '',
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
catch (error) {
|
|
273
|
-
let errorMessage = 'Unknown error occurred during tweet posting';
|
|
274
|
-
if (error instanceof Error) {
|
|
275
|
-
errorMessage = error.message;
|
|
276
|
-
if (errorMessage.includes('401')) {
|
|
277
|
-
errorMessage =
|
|
278
|
-
'Authentication failed. Please check your X (Twitter) credentials.';
|
|
279
|
-
}
|
|
280
|
-
else if (errorMessage.includes('403')) {
|
|
281
|
-
errorMessage =
|
|
282
|
-
'Permission denied. Please ensure you have write access.';
|
|
283
|
-
}
|
|
284
|
-
else if (errorMessage.includes('429')) {
|
|
285
|
-
errorMessage =
|
|
286
|
-
'Rate limit exceeded. Please wait before posting again.';
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
return {
|
|
290
|
-
operation: 'post_tweet',
|
|
291
|
-
success: false,
|
|
292
|
-
tweet: undefined,
|
|
293
|
-
error: errorMessage,
|
|
294
|
-
};
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
async getTweet(params) {
|
|
298
|
-
try {
|
|
299
|
-
const { tweet_id } = params;
|
|
300
|
-
const response = await this.makeTwitterApiRequest(`/tweets/${tweet_id}?tweet.fields=created_at,public_metrics,author_id`);
|
|
301
|
-
return {
|
|
302
|
-
operation: 'get_tweet',
|
|
303
|
-
success: true,
|
|
304
|
-
tweet: {
|
|
305
|
-
id: response.data.id,
|
|
306
|
-
text: response.data.text,
|
|
307
|
-
author_id: response.data.author_id,
|
|
308
|
-
created_at: response.data.created_at,
|
|
309
|
-
public_metrics: response.data.public_metrics,
|
|
310
|
-
},
|
|
311
|
-
error: '',
|
|
312
|
-
};
|
|
313
|
-
}
|
|
314
|
-
catch (error) {
|
|
315
|
-
let errorMessage = 'Unknown error occurred while fetching tweet';
|
|
316
|
-
if (error instanceof Error) {
|
|
317
|
-
errorMessage = error.message;
|
|
318
|
-
if (errorMessage.includes('404')) {
|
|
319
|
-
errorMessage = 'Tweet not found. Please check the tweet ID.';
|
|
320
|
-
}
|
|
321
|
-
else if (errorMessage.includes('401')) {
|
|
322
|
-
errorMessage =
|
|
323
|
-
'Authentication failed. Please check your X (Twitter) credentials.';
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
return {
|
|
327
|
-
operation: 'get_tweet',
|
|
328
|
-
success: false,
|
|
329
|
-
tweet: undefined,
|
|
330
|
-
error: errorMessage,
|
|
331
|
-
};
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
async getUserInfo(params) {
|
|
335
|
-
try {
|
|
336
|
-
const { username, user_id } = params;
|
|
337
|
-
if (!username && !user_id) {
|
|
338
|
-
throw new Error('Either username or user_id is required');
|
|
339
|
-
}
|
|
340
|
-
let endpoint;
|
|
341
|
-
if (username) {
|
|
342
|
-
endpoint = `/users/by/username/${username}?user.fields=description,public_metrics,verified`;
|
|
343
|
-
}
|
|
344
|
-
else {
|
|
345
|
-
endpoint = `/users/${user_id}?user.fields=description,public_metrics,verified`;
|
|
346
|
-
}
|
|
347
|
-
const response = await this.makeTwitterApiRequest(endpoint);
|
|
348
|
-
return {
|
|
349
|
-
operation: 'get_user_info',
|
|
350
|
-
success: true,
|
|
351
|
-
user: {
|
|
352
|
-
id: response.data.id,
|
|
353
|
-
name: response.data.name,
|
|
354
|
-
username: response.data.username,
|
|
355
|
-
description: response.data.description,
|
|
356
|
-
public_metrics: response.data.public_metrics,
|
|
357
|
-
verified: response.data.verified,
|
|
358
|
-
},
|
|
359
|
-
error: '',
|
|
360
|
-
};
|
|
361
|
-
}
|
|
362
|
-
catch (error) {
|
|
363
|
-
let errorMessage = 'Unknown error occurred while fetching user info';
|
|
364
|
-
if (error instanceof Error) {
|
|
365
|
-
errorMessage = error.message;
|
|
366
|
-
if (errorMessage.includes('404')) {
|
|
367
|
-
errorMessage =
|
|
368
|
-
'User not found. Please check the username or user ID.';
|
|
369
|
-
}
|
|
370
|
-
else if (errorMessage.includes('401')) {
|
|
371
|
-
errorMessage =
|
|
372
|
-
'Authentication failed. Please check your X (Twitter) credentials.';
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
return {
|
|
376
|
-
operation: 'get_user_info',
|
|
377
|
-
success: false,
|
|
378
|
-
user: undefined,
|
|
379
|
-
error: errorMessage,
|
|
380
|
-
};
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
async getUserTweets(params) {
|
|
384
|
-
try {
|
|
385
|
-
const { username, user_id, max_results } = params;
|
|
386
|
-
if (!username && !user_id) {
|
|
387
|
-
throw new Error('Either username or user_id is required');
|
|
388
|
-
}
|
|
389
|
-
// First get user ID if only username provided
|
|
390
|
-
let actualUserId;
|
|
391
|
-
if (username && !user_id) {
|
|
392
|
-
const userResponse = await this.makeTwitterApiRequest(`/users/by/username/${username}`);
|
|
393
|
-
actualUserId = userResponse.data.id;
|
|
394
|
-
}
|
|
395
|
-
else {
|
|
396
|
-
actualUserId = user_id;
|
|
397
|
-
}
|
|
398
|
-
const response = await this.makeTwitterApiRequest(`/users/${actualUserId}/tweets?max_results=${max_results}&tweet.fields=created_at,public_metrics,author_id`);
|
|
399
|
-
const tweets = response.data?.map((tweet) => ({
|
|
400
|
-
id: tweet.id,
|
|
401
|
-
text: tweet.text,
|
|
402
|
-
author_id: tweet.author_id,
|
|
403
|
-
created_at: tweet.created_at,
|
|
404
|
-
public_metrics: tweet.public_metrics,
|
|
405
|
-
})) || [];
|
|
406
|
-
return {
|
|
407
|
-
operation: 'get_user_tweets',
|
|
408
|
-
success: true,
|
|
409
|
-
tweets,
|
|
410
|
-
total_count: tweets.length,
|
|
411
|
-
error: '',
|
|
412
|
-
};
|
|
413
|
-
}
|
|
414
|
-
catch (error) {
|
|
415
|
-
let errorMessage = 'Unknown error occurred while fetching user tweets';
|
|
416
|
-
if (error instanceof Error) {
|
|
417
|
-
errorMessage = error.message;
|
|
418
|
-
if (errorMessage.includes('404')) {
|
|
419
|
-
errorMessage =
|
|
420
|
-
'User not found. Please check the username or user ID.';
|
|
421
|
-
}
|
|
422
|
-
else if (errorMessage.includes('401')) {
|
|
423
|
-
errorMessage =
|
|
424
|
-
'Authentication failed. Please check your X (Twitter) credentials.';
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
return {
|
|
428
|
-
operation: 'get_user_tweets',
|
|
429
|
-
success: false,
|
|
430
|
-
tweets: undefined,
|
|
431
|
-
total_count: 0,
|
|
432
|
-
error: errorMessage,
|
|
433
|
-
};
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
chooseCredential() {
|
|
437
|
-
const { credentials } = this.params;
|
|
438
|
-
if (!credentials || typeof credentials !== 'object') {
|
|
439
|
-
throw new Error('No X (Twitter) credentials provided');
|
|
440
|
-
}
|
|
441
|
-
// X Twitter bubble uses X_TWITTER_CRED credentials
|
|
442
|
-
return credentials[CredentialType.X_TWITTER_CRED];
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
//# sourceMappingURL=x-twitter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"x-twitter.js","sourceRoot":"","sources":["../../../src/bubbles/service-bubble/x-twitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,125 +0,0 @@
|
|
|
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, type GenerationResult } 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
|
-
type BubbleFlowGeneratorParams = z.output<typeof BubbleFlowGeneratorParamsSchema>;
|
|
28
|
-
/**
|
|
29
|
-
* Simple BubbleFlow Generator using AI agent with tools
|
|
30
|
-
*/
|
|
31
|
-
export declare class BubbleFlowGeneratorWorkflow extends WorkflowBubble<BubbleFlowGeneratorParams, GenerationResult> {
|
|
32
|
-
static readonly type: "workflow";
|
|
33
|
-
static readonly bubbleName = "bubbleflow-generator";
|
|
34
|
-
static readonly schema: z.ZodObject<{
|
|
35
|
-
prompt: z.ZodString;
|
|
36
|
-
credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>;
|
|
37
|
-
}, "strip", z.ZodTypeAny, {
|
|
38
|
-
prompt: string;
|
|
39
|
-
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
40
|
-
}, {
|
|
41
|
-
prompt: string;
|
|
42
|
-
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
43
|
-
}>;
|
|
44
|
-
static readonly resultSchema: z.ZodObject<{
|
|
45
|
-
generatedCode: z.ZodString;
|
|
46
|
-
isValid: z.ZodBoolean;
|
|
47
|
-
success: z.ZodBoolean;
|
|
48
|
-
error: z.ZodString;
|
|
49
|
-
flowId: z.ZodOptional<z.ZodNumber>;
|
|
50
|
-
toolCalls: z.ZodArray<z.ZodUnknown, "many">;
|
|
51
|
-
summary: z.ZodDefault<z.ZodString>;
|
|
52
|
-
inputsSchema: z.ZodDefault<z.ZodString>;
|
|
53
|
-
bubblesUsed: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
54
|
-
tokenUsage: z.ZodOptional<z.ZodObject<{
|
|
55
|
-
inputTokens: z.ZodNumber;
|
|
56
|
-
outputTokens: z.ZodNumber;
|
|
57
|
-
totalTokens: z.ZodNumber;
|
|
58
|
-
modelName: z.ZodOptional<z.ZodString>;
|
|
59
|
-
}, "strip", z.ZodTypeAny, {
|
|
60
|
-
inputTokens: number;
|
|
61
|
-
outputTokens: number;
|
|
62
|
-
totalTokens: number;
|
|
63
|
-
modelName?: string | undefined;
|
|
64
|
-
}, {
|
|
65
|
-
inputTokens: number;
|
|
66
|
-
outputTokens: number;
|
|
67
|
-
totalTokens: number;
|
|
68
|
-
modelName?: string | undefined;
|
|
69
|
-
}>>;
|
|
70
|
-
bubbleCount: z.ZodOptional<z.ZodNumber>;
|
|
71
|
-
codeLength: z.ZodOptional<z.ZodNumber>;
|
|
72
|
-
}, "strip", z.ZodTypeAny, {
|
|
73
|
-
success: boolean;
|
|
74
|
-
error: string;
|
|
75
|
-
summary: string;
|
|
76
|
-
generatedCode: string;
|
|
77
|
-
isValid: boolean;
|
|
78
|
-
toolCalls: unknown[];
|
|
79
|
-
inputsSchema: string;
|
|
80
|
-
bubblesUsed: string[];
|
|
81
|
-
tokenUsage?: {
|
|
82
|
-
inputTokens: number;
|
|
83
|
-
outputTokens: number;
|
|
84
|
-
totalTokens: number;
|
|
85
|
-
modelName?: string | undefined;
|
|
86
|
-
} | undefined;
|
|
87
|
-
flowId?: number | undefined;
|
|
88
|
-
bubbleCount?: number | undefined;
|
|
89
|
-
codeLength?: number | undefined;
|
|
90
|
-
}, {
|
|
91
|
-
success: boolean;
|
|
92
|
-
error: string;
|
|
93
|
-
generatedCode: string;
|
|
94
|
-
isValid: boolean;
|
|
95
|
-
toolCalls: unknown[];
|
|
96
|
-
tokenUsage?: {
|
|
97
|
-
inputTokens: number;
|
|
98
|
-
outputTokens: number;
|
|
99
|
-
totalTokens: number;
|
|
100
|
-
modelName?: string | undefined;
|
|
101
|
-
} | undefined;
|
|
102
|
-
summary?: string | undefined;
|
|
103
|
-
flowId?: number | undefined;
|
|
104
|
-
bubbleCount?: number | undefined;
|
|
105
|
-
codeLength?: number | undefined;
|
|
106
|
-
inputsSchema?: string | undefined;
|
|
107
|
-
bubblesUsed?: string[] | undefined;
|
|
108
|
-
}>;
|
|
109
|
-
static readonly shortDescription = "Generate BubbleFlow code from natural language";
|
|
110
|
-
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 ";
|
|
111
|
-
static readonly alias = "generate-flow";
|
|
112
|
-
private bubbleFactory;
|
|
113
|
-
constructor(params: z.input<typeof BubbleFlowGeneratorParamsSchema>, context?: BubbleContext);
|
|
114
|
-
private runValidationAgent;
|
|
115
|
-
private runSummarizeAgent;
|
|
116
|
-
private createSystemPrompt;
|
|
117
|
-
private createStreamingSystemPrompt;
|
|
118
|
-
protected performAction(context?: BubbleContext): Promise<GenerationResult>;
|
|
119
|
-
/**
|
|
120
|
-
* Execute the workflow with streaming support for real-time code generation feedback
|
|
121
|
-
*/
|
|
122
|
-
actionWithStreaming(streamingCallback: StreamingCallback, context?: BubbleContext): Promise<GenerationResult>;
|
|
123
|
-
}
|
|
124
|
-
export {};
|
|
125
|
-
//# sourceMappingURL=bubbleflow-generator.workflow.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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,EACL,cAAc,EAEd,KAAK,gBAAgB,EAItB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AA4CvC;;GAEG;AACH,QAAA,MAAM,+BAA+B;;;;;;;;;EAUnC,CAAC;AAEH,KAAK,yBAAyB,GAAG,CAAC,CAAC,MAAM,CACvC,OAAO,+BAA+B,CACvC,CAAC;AA2BF;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,cAAc,CAC7D,yBAAyB,EACzB,gBAAgB,CACjB;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;;;;;;;;;;;;;;;;;;;qBAoIS,CAAC;;;;;qBAIxB,CAAC;;;;;;;;;;;;;;;;;qBAaH,CAAT;;;;;;;;;;;;;;;qBAsBkB,CAAC;;;;;;;;OA3KgC;IACtD,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;YA+IlB,iBAAiB;IAkF/B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,2BAA2B;cAmBnB,aAAa,CAC3B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,gBAAgB,CAAC;IAwR5B;;OAEG;IACU,mBAAmB,CAC9B,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,gBAAgB,CAAC;CA2a7B"}
|