@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"twitter-tool.d.ts","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/twitter-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ToolBubble } from '../../types/tool-bubble-class.js';
|
|
3
|
+
import { CredentialType } from '@bubblelab/shared-schemas';
|
|
4
|
+
import { ApifyBubble } from '../service-bubble/apify/apify.js';
|
|
5
|
+
// Unified Twitter data types
|
|
6
|
+
const TwitterUserSchema = z.object({
|
|
7
|
+
id: z.string().nullable().describe('User ID'),
|
|
8
|
+
name: z.string().nullable().describe('User display name'),
|
|
9
|
+
userName: z.string().nullable().describe('User handle (username)'),
|
|
10
|
+
description: z.string().nullable().describe('User bio'),
|
|
11
|
+
isVerified: z.boolean().nullable().describe('Whether user is verified'),
|
|
12
|
+
isBlueVerified: z
|
|
13
|
+
.boolean()
|
|
14
|
+
.nullable()
|
|
15
|
+
.describe('Whether user has Twitter Blue'),
|
|
16
|
+
profilePicture: z.string().nullable().describe('Profile picture URL'),
|
|
17
|
+
followers: z.number().nullable().describe('Number of followers'),
|
|
18
|
+
following: z.number().nullable().describe('Number of following'),
|
|
19
|
+
tweetsCount: z.number().nullable().describe('Total number of tweets'),
|
|
20
|
+
url: z.string().nullable().describe('Profile URL'),
|
|
21
|
+
createdAt: z.string().nullable().describe('Account creation date'),
|
|
22
|
+
});
|
|
23
|
+
const TwitterTweetSchema = z.object({
|
|
24
|
+
id: z.string().nullable().describe('Tweet ID'),
|
|
25
|
+
url: z.string().nullable().describe('Tweet URL'),
|
|
26
|
+
text: z.string().nullable().describe('Tweet text content'),
|
|
27
|
+
author: TwitterUserSchema.nullable().describe('Tweet author information'),
|
|
28
|
+
createdAt: z.string().nullable().describe('Tweet creation date (ISO format)'),
|
|
29
|
+
stats: z
|
|
30
|
+
.object({
|
|
31
|
+
retweetCount: z.number().nullable(),
|
|
32
|
+
replyCount: z.number().nullable(),
|
|
33
|
+
likeCount: z.number().nullable(),
|
|
34
|
+
quoteCount: z.number().nullable(),
|
|
35
|
+
viewCount: z.number().nullable(),
|
|
36
|
+
bookmarkCount: z.number().nullable(),
|
|
37
|
+
})
|
|
38
|
+
.nullable()
|
|
39
|
+
.describe('Tweet engagement statistics'),
|
|
40
|
+
lang: z.string().nullable().describe('Tweet language code'),
|
|
41
|
+
media: z
|
|
42
|
+
.array(z.object({
|
|
43
|
+
type: z.string().nullable(),
|
|
44
|
+
url: z.string().nullable(),
|
|
45
|
+
width: z.number().nullable(),
|
|
46
|
+
height: z.number().nullable(),
|
|
47
|
+
duration: z.number().nullable(),
|
|
48
|
+
}))
|
|
49
|
+
.nullable()
|
|
50
|
+
.describe('Media attachments'),
|
|
51
|
+
entities: z
|
|
52
|
+
.object({
|
|
53
|
+
hashtags: z.array(z.string()).nullable(),
|
|
54
|
+
urls: z.array(z.string()).nullable(),
|
|
55
|
+
mentions: z.array(z.string()).nullable(),
|
|
56
|
+
})
|
|
57
|
+
.nullable()
|
|
58
|
+
.describe('Tweet entities'),
|
|
59
|
+
isRetweet: z.boolean().nullable(),
|
|
60
|
+
isQuote: z.boolean().nullable(),
|
|
61
|
+
isReply: z.boolean().nullable(),
|
|
62
|
+
});
|
|
63
|
+
const TwitterToolParamsSchema = z.object({
|
|
64
|
+
operation: z
|
|
65
|
+
.enum(['scrapeProfile', 'search', 'scrapeUrl'])
|
|
66
|
+
.describe('Operation to perform: scrapeProfile (get tweets from user handles), search (search tweets by query), scrapeUrl (scrape specific Twitter URLs)'),
|
|
67
|
+
// === scrapeProfile operation ===
|
|
68
|
+
twitterHandles: z
|
|
69
|
+
.array(z.string())
|
|
70
|
+
.optional()
|
|
71
|
+
.describe('[scrapeProfile] Twitter handles/usernames to scrape (without @). Example: ["elonmusk", "OpenAI"]'),
|
|
72
|
+
// === search operation ===
|
|
73
|
+
searchTerms: z
|
|
74
|
+
.array(z.string())
|
|
75
|
+
.optional()
|
|
76
|
+
.describe('[search] Search queries. Supports advanced search syntax: https://github.com/igorbrigadir/twitter-advanced-search. Example: ["AI news", "#machinelearning"]'),
|
|
77
|
+
// === scrapeUrl operation ===
|
|
78
|
+
startUrls: z
|
|
79
|
+
.array(z.string())
|
|
80
|
+
.optional()
|
|
81
|
+
.describe('[scrapeUrl] Direct Twitter URLs to scrape. Supports Tweet, Profile, Search, or List URLs. Example: ["https://twitter.com/elonmusk/status/123456"]'),
|
|
82
|
+
// === Common options ===
|
|
83
|
+
maxItems: z
|
|
84
|
+
.number()
|
|
85
|
+
.min(1)
|
|
86
|
+
.max(1000)
|
|
87
|
+
.default(20)
|
|
88
|
+
.optional()
|
|
89
|
+
.describe('Maximum number of tweets to return (default: 20, max: 1000)'),
|
|
90
|
+
sort: z
|
|
91
|
+
.enum(['Top', 'Latest'])
|
|
92
|
+
.optional()
|
|
93
|
+
.describe('[search only] Sort results by "Top" (most relevant) or "Latest" (most recent)'),
|
|
94
|
+
tweetLanguage: z
|
|
95
|
+
.string()
|
|
96
|
+
.optional()
|
|
97
|
+
.describe('Filter tweets by language using ISO 639-1 code (e.g., "en" for English, "es" for Spanish)'),
|
|
98
|
+
credentials: z
|
|
99
|
+
.record(z.nativeEnum(CredentialType), z.string())
|
|
100
|
+
.optional()
|
|
101
|
+
.describe('Required credentials (auto-injected)'),
|
|
102
|
+
});
|
|
103
|
+
const TwitterToolResultSchema = z.object({
|
|
104
|
+
operation: z
|
|
105
|
+
.enum(['scrapeProfile', 'search', 'scrapeUrl'])
|
|
106
|
+
.describe('Operation that was performed'),
|
|
107
|
+
tweets: z.array(TwitterTweetSchema).describe('Array of scraped tweets'),
|
|
108
|
+
totalTweets: z.number().describe('Total number of tweets scraped'),
|
|
109
|
+
success: z.boolean().describe('Whether the operation was successful'),
|
|
110
|
+
error: z.string().describe('Error message if operation failed'),
|
|
111
|
+
});
|
|
112
|
+
/**
|
|
113
|
+
* Generic Twitter/X scraping tool with unified interface
|
|
114
|
+
*
|
|
115
|
+
* This tool abstracts away the underlying scraping service (currently Apify)
|
|
116
|
+
* and provides a simple, opinionated interface for Twitter data extraction.
|
|
117
|
+
*
|
|
118
|
+
* Supports three operations:
|
|
119
|
+
* - scrapeProfile: Scrape user profiles and their tweets
|
|
120
|
+
* - search: Search for tweets by keywords or hashtags
|
|
121
|
+
* - scrapeUrl: Scrape specific Twitter URLs (tweets, profiles, searches, lists)
|
|
122
|
+
*
|
|
123
|
+
* Future versions can add support for other services (BrightData, custom scrapers)
|
|
124
|
+
* while maintaining the same interface.
|
|
125
|
+
*/
|
|
126
|
+
export class TwitterTool extends ToolBubble {
|
|
127
|
+
static bubbleName = 'twitter-tool';
|
|
128
|
+
static schema = TwitterToolParamsSchema;
|
|
129
|
+
static resultSchema = TwitterToolResultSchema;
|
|
130
|
+
static shortDescription = 'Scrape Twitter/X profiles, tweets, and search results with a simple, unified interface.';
|
|
131
|
+
static longDescription = `
|
|
132
|
+
Universal Twitter/X scraping tool that provides a simple, opinionated interface for extracting Twitter data.
|
|
133
|
+
|
|
134
|
+
**OPERATIONS:**
|
|
135
|
+
1. **scrapeProfile**: Scrape user profiles and their tweets
|
|
136
|
+
- Get tweets from specific user handles
|
|
137
|
+
- Track influencer or brand accounts
|
|
138
|
+
- Monitor user activity and engagement
|
|
139
|
+
|
|
140
|
+
2. **search**: Search for tweets by keywords or hashtags
|
|
141
|
+
- Find tweets by search terms or hashtags
|
|
142
|
+
- Monitor brand mentions and campaigns
|
|
143
|
+
- Research trending topics and conversations
|
|
144
|
+
- Supports advanced search syntax (see Twitter advanced search)
|
|
145
|
+
|
|
146
|
+
3. **scrapeUrl**: Scrape specific Twitter URLs
|
|
147
|
+
- Scrape individual tweets, profiles, search results, or lists
|
|
148
|
+
- Extract data from specific Twitter URLs
|
|
149
|
+
- Useful for targeted data collection
|
|
150
|
+
|
|
151
|
+
**WHEN TO USE THIS TOOL:**
|
|
152
|
+
- **Any Twitter scraping task** - profiles, tweets, searches, engagement data
|
|
153
|
+
- **Social media research** - influencer analysis, competitor monitoring
|
|
154
|
+
- **Content gathering** - tweets, replies, retweets, engagement metrics
|
|
155
|
+
- **Market research** - brand mentions, user sentiment on Twitter
|
|
156
|
+
- **Trend analysis** - hashtag tracking, viral content discovery
|
|
157
|
+
- **Real-time monitoring** - track conversations and mentions
|
|
158
|
+
|
|
159
|
+
**DO NOT USE research-agent-tool or web-scrape-tool for Twitter** - This tool is specifically optimized for Twitter and provides:
|
|
160
|
+
- Unified data format across all Twitter sources
|
|
161
|
+
- Automatic service selection and optimization
|
|
162
|
+
- Rate limiting and reliability handling
|
|
163
|
+
- Clean, structured data ready for analysis
|
|
164
|
+
|
|
165
|
+
**Simple Interface:**
|
|
166
|
+
Just specify the operation and provide Twitter handles, search terms, or URLs to get back clean, structured data.
|
|
167
|
+
The tool automatically handles:
|
|
168
|
+
- Handle normalization (accepts handles with or without @)
|
|
169
|
+
- Service selection (currently Apify, future: multiple sources)
|
|
170
|
+
- Data transformation to unified format
|
|
171
|
+
- Error handling and retries
|
|
172
|
+
|
|
173
|
+
**What you get:**
|
|
174
|
+
- Tweets with text, engagement stats, timestamps
|
|
175
|
+
- Author information (for scrapeProfile operation)
|
|
176
|
+
- Hashtags, mentions, and URLs
|
|
177
|
+
- Media attachments
|
|
178
|
+
- Language and metadata
|
|
179
|
+
|
|
180
|
+
**Use cases:**
|
|
181
|
+
- Influencer analysis and discovery
|
|
182
|
+
- Brand monitoring and sentiment analysis
|
|
183
|
+
- Competitor research on Twitter
|
|
184
|
+
- Content strategy and trend analysis
|
|
185
|
+
- Market research through Twitter data
|
|
186
|
+
- Campaign performance tracking
|
|
187
|
+
- Hashtag research and optimization
|
|
188
|
+
- Real-time event monitoring
|
|
189
|
+
|
|
190
|
+
The tool uses best-available services behind the scenes while maintaining a consistent, simple interface.
|
|
191
|
+
`;
|
|
192
|
+
static alias = 'twitter';
|
|
193
|
+
static type = 'tool';
|
|
194
|
+
constructor(params = {
|
|
195
|
+
operation: 'scrapeProfile',
|
|
196
|
+
twitterHandles: ['elonmusk'],
|
|
197
|
+
maxItems: 20,
|
|
198
|
+
}, context) {
|
|
199
|
+
super(params, context);
|
|
200
|
+
}
|
|
201
|
+
async performAction() {
|
|
202
|
+
const credentials = this.params?.credentials;
|
|
203
|
+
if (!credentials || !credentials[CredentialType.APIFY_CRED]) {
|
|
204
|
+
return this.createErrorResult('Twitter scraping requires authentication. Please configure APIFY_CRED.');
|
|
205
|
+
}
|
|
206
|
+
try {
|
|
207
|
+
const { operation } = this.params;
|
|
208
|
+
// Validate required fields based on operation
|
|
209
|
+
if (operation === 'scrapeProfile' &&
|
|
210
|
+
(!this.params.twitterHandles || this.params.twitterHandles.length === 0)) {
|
|
211
|
+
return this.createErrorResult('twitterHandles array is required for scrapeProfile operation');
|
|
212
|
+
}
|
|
213
|
+
if (operation === 'search' &&
|
|
214
|
+
(!this.params.searchTerms || this.params.searchTerms.length === 0)) {
|
|
215
|
+
return this.createErrorResult('searchTerms array is required for search operation');
|
|
216
|
+
}
|
|
217
|
+
if (operation === 'scrapeUrl' &&
|
|
218
|
+
(!this.params.startUrls || this.params.startUrls.length === 0)) {
|
|
219
|
+
return this.createErrorResult('startUrls array is required for scrapeUrl operation');
|
|
220
|
+
}
|
|
221
|
+
const result = await (async () => {
|
|
222
|
+
switch (operation) {
|
|
223
|
+
case 'scrapeProfile':
|
|
224
|
+
return await this.handleScrapeProfile(this.params);
|
|
225
|
+
case 'search':
|
|
226
|
+
return await this.handleSearch(this.params);
|
|
227
|
+
case 'scrapeUrl':
|
|
228
|
+
return await this.handleScrapeUrl(this.params);
|
|
229
|
+
default:
|
|
230
|
+
throw new Error(`Unsupported operation: ${operation}`);
|
|
231
|
+
}
|
|
232
|
+
})();
|
|
233
|
+
return result;
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
return this.createErrorResult(error instanceof Error ? error.message : 'Unknown error occurred');
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Create an error result
|
|
241
|
+
*/
|
|
242
|
+
createErrorResult(errorMessage) {
|
|
243
|
+
const { operation } = this.params;
|
|
244
|
+
return {
|
|
245
|
+
operation: operation || 'scrapeProfile',
|
|
246
|
+
tweets: [],
|
|
247
|
+
totalTweets: 0,
|
|
248
|
+
success: false,
|
|
249
|
+
error: errorMessage,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Handle scrapeProfile operation
|
|
254
|
+
*/
|
|
255
|
+
async handleScrapeProfile(params) {
|
|
256
|
+
// Normalize handles (remove @ if present)
|
|
257
|
+
const normalizedHandles = this.normalizeHandles(params.twitterHandles);
|
|
258
|
+
// Use Apify service to scrape profiles
|
|
259
|
+
const result = await this.scrapeWithApifyProfiles(normalizedHandles, params.maxItems || 20, params.tweetLanguage, params.credentials);
|
|
260
|
+
return {
|
|
261
|
+
operation: 'scrapeProfile',
|
|
262
|
+
tweets: result.tweets,
|
|
263
|
+
totalTweets: result.totalTweets,
|
|
264
|
+
success: result.success,
|
|
265
|
+
error: result.error,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Handle search operation
|
|
270
|
+
*/
|
|
271
|
+
async handleSearch(params) {
|
|
272
|
+
// Use Apify service to search tweets
|
|
273
|
+
const result = await this.scrapeWithApifySearch(params.searchTerms, params.maxItems || 20, params.sort, params.tweetLanguage, params.credentials);
|
|
274
|
+
return {
|
|
275
|
+
operation: 'search',
|
|
276
|
+
tweets: result.tweets,
|
|
277
|
+
totalTweets: result.totalTweets,
|
|
278
|
+
success: result.success,
|
|
279
|
+
error: result.error,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Handle scrapeUrl operation
|
|
284
|
+
*/
|
|
285
|
+
async handleScrapeUrl(params) {
|
|
286
|
+
// Use Apify service to scrape URLs
|
|
287
|
+
const result = await this.scrapeWithApifyUrls(params.startUrls, params.maxItems || 20, params.tweetLanguage, params.credentials);
|
|
288
|
+
return {
|
|
289
|
+
operation: 'scrapeUrl',
|
|
290
|
+
tweets: result.tweets,
|
|
291
|
+
totalTweets: result.totalTweets,
|
|
292
|
+
success: result.success,
|
|
293
|
+
error: result.error,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Scrape profiles using Apify service
|
|
298
|
+
* This is the current implementation - future versions could add other services
|
|
299
|
+
*/
|
|
300
|
+
async scrapeWithApifyProfiles(handles, maxItems, tweetLanguage, credentials) {
|
|
301
|
+
const input = {
|
|
302
|
+
twitterHandles: handles,
|
|
303
|
+
maxItems,
|
|
304
|
+
};
|
|
305
|
+
if (tweetLanguage) {
|
|
306
|
+
input.tweetLanguage = tweetLanguage;
|
|
307
|
+
}
|
|
308
|
+
const tweetProfileScraper = new ApifyBubble({
|
|
309
|
+
actorId: 'apidojo/tweet-scraper',
|
|
310
|
+
input,
|
|
311
|
+
waitForFinish: true,
|
|
312
|
+
timeout: 180000, // 3 minutes
|
|
313
|
+
credentials,
|
|
314
|
+
}, this.context, 'tweetProfileScraper');
|
|
315
|
+
const apifyResult = await tweetProfileScraper.action();
|
|
316
|
+
if (!apifyResult.data.success) {
|
|
317
|
+
return {
|
|
318
|
+
tweets: [],
|
|
319
|
+
totalTweets: 0,
|
|
320
|
+
success: false,
|
|
321
|
+
error: apifyResult.data.error ||
|
|
322
|
+
'Failed to scrape Twitter profiles. Please try again.',
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
const items = apifyResult.data.items || [];
|
|
326
|
+
const tweets = this.transformTweets(items);
|
|
327
|
+
return {
|
|
328
|
+
tweets,
|
|
329
|
+
totalTweets: tweets.length,
|
|
330
|
+
success: true,
|
|
331
|
+
error: '',
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Search tweets using Apify service
|
|
336
|
+
* This is the current implementation - future versions could add other services
|
|
337
|
+
*/
|
|
338
|
+
async scrapeWithApifySearch(searchTerms, maxItems, sort, tweetLanguage, credentials) {
|
|
339
|
+
const input = {
|
|
340
|
+
searchTerms,
|
|
341
|
+
maxItems,
|
|
342
|
+
};
|
|
343
|
+
if (sort) {
|
|
344
|
+
input.sort = sort;
|
|
345
|
+
}
|
|
346
|
+
if (tweetLanguage) {
|
|
347
|
+
input.tweetLanguage = tweetLanguage;
|
|
348
|
+
}
|
|
349
|
+
const tweetSearcher = new ApifyBubble({
|
|
350
|
+
actorId: 'apidojo/tweet-scraper',
|
|
351
|
+
input,
|
|
352
|
+
waitForFinish: true,
|
|
353
|
+
timeout: 180000, // 3 minutes
|
|
354
|
+
credentials,
|
|
355
|
+
}, this.context, 'tweetSearcher');
|
|
356
|
+
const apifyResult = await tweetSearcher.action();
|
|
357
|
+
if (!apifyResult.data.success) {
|
|
358
|
+
return {
|
|
359
|
+
tweets: [],
|
|
360
|
+
totalTweets: 0,
|
|
361
|
+
success: false,
|
|
362
|
+
error: apifyResult.data.error ||
|
|
363
|
+
'Failed to search Twitter. Please try again.',
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
const items = apifyResult.data.items || [];
|
|
367
|
+
const tweets = this.transformTweets(items);
|
|
368
|
+
return {
|
|
369
|
+
tweets,
|
|
370
|
+
totalTweets: tweets.length,
|
|
371
|
+
success: true,
|
|
372
|
+
error: '',
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Scrape URLs using Apify service
|
|
377
|
+
* This is the current implementation - future versions could add other services
|
|
378
|
+
*/
|
|
379
|
+
async scrapeWithApifyUrls(urls, maxItems, tweetLanguage, credentials) {
|
|
380
|
+
const input = {
|
|
381
|
+
startUrls: urls,
|
|
382
|
+
maxItems,
|
|
383
|
+
};
|
|
384
|
+
if (tweetLanguage) {
|
|
385
|
+
input.tweetLanguage = tweetLanguage;
|
|
386
|
+
}
|
|
387
|
+
const tweetUrlScraper = new ApifyBubble({
|
|
388
|
+
actorId: 'apidojo/tweet-scraper',
|
|
389
|
+
input,
|
|
390
|
+
waitForFinish: true,
|
|
391
|
+
timeout: 180000, // 3 minutes
|
|
392
|
+
credentials,
|
|
393
|
+
}, this.context, 'tweetUrlScraper');
|
|
394
|
+
const apifyResult = await tweetUrlScraper.action();
|
|
395
|
+
if (!apifyResult.data.success) {
|
|
396
|
+
return {
|
|
397
|
+
tweets: [],
|
|
398
|
+
totalTweets: 0,
|
|
399
|
+
success: false,
|
|
400
|
+
error: apifyResult.data.error ||
|
|
401
|
+
'Failed to scrape Twitter URLs. Please try again.',
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
const items = apifyResult.data.items || [];
|
|
405
|
+
const tweets = this.transformTweets(items);
|
|
406
|
+
return {
|
|
407
|
+
tweets,
|
|
408
|
+
totalTweets: tweets.length,
|
|
409
|
+
success: true,
|
|
410
|
+
error: '',
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Normalize Twitter handles (remove @ if present)
|
|
415
|
+
*/
|
|
416
|
+
normalizeHandles(handles) {
|
|
417
|
+
return handles.map((handle) => {
|
|
418
|
+
// Remove @ if present
|
|
419
|
+
return handle.startsWith('@') ? handle.slice(1) : handle;
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
transformTweets(items) {
|
|
423
|
+
return items.map((item) => ({
|
|
424
|
+
id: item.id || null,
|
|
425
|
+
url: item.url || null,
|
|
426
|
+
text: item.text || null,
|
|
427
|
+
author: item.author
|
|
428
|
+
? {
|
|
429
|
+
id: item.author.id || null,
|
|
430
|
+
name: item.author.name || null,
|
|
431
|
+
userName: item.author.userName || null,
|
|
432
|
+
description: item.author.description || null,
|
|
433
|
+
isVerified: item.author.isVerified || null,
|
|
434
|
+
isBlueVerified: item.author.isBlueVerified || null,
|
|
435
|
+
profilePicture: item.author.profilePicture || null,
|
|
436
|
+
followers: item.author.followers || null,
|
|
437
|
+
following: item.author.following || null,
|
|
438
|
+
tweetsCount: item.author.tweetsCount || null,
|
|
439
|
+
url: item.author.url || null,
|
|
440
|
+
createdAt: item.author.createdAt || null,
|
|
441
|
+
}
|
|
442
|
+
: null,
|
|
443
|
+
createdAt: item.createdAt || null,
|
|
444
|
+
stats: {
|
|
445
|
+
retweetCount: item.retweetCount || null,
|
|
446
|
+
replyCount: item.replyCount || null,
|
|
447
|
+
likeCount: item.likeCount || null,
|
|
448
|
+
quoteCount: item.quoteCount || null,
|
|
449
|
+
viewCount: item.viewCount || null,
|
|
450
|
+
bookmarkCount: item.bookmarkCount || null,
|
|
451
|
+
},
|
|
452
|
+
lang: item.lang || null,
|
|
453
|
+
media: item.media
|
|
454
|
+
? item.media.map((m) => {
|
|
455
|
+
if (typeof m === 'string') {
|
|
456
|
+
return {
|
|
457
|
+
type: null,
|
|
458
|
+
url: m,
|
|
459
|
+
width: null,
|
|
460
|
+
height: null,
|
|
461
|
+
duration: null,
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
return {
|
|
465
|
+
type: m.type || null,
|
|
466
|
+
url: m.url || null,
|
|
467
|
+
width: m.width || null,
|
|
468
|
+
height: m.height || null,
|
|
469
|
+
duration: m.duration || null,
|
|
470
|
+
};
|
|
471
|
+
})
|
|
472
|
+
: null,
|
|
473
|
+
entities: item.entities
|
|
474
|
+
? {
|
|
475
|
+
hashtags: item.entities.hashtags
|
|
476
|
+
? item.entities.hashtags.map((h) => h.text || '').filter((t) => t)
|
|
477
|
+
: null,
|
|
478
|
+
urls: item.entities.urls
|
|
479
|
+
? item.entities.urls.map((u) => u.url || '').filter((u) => u)
|
|
480
|
+
: null,
|
|
481
|
+
mentions: item.entities.userMentions
|
|
482
|
+
? item.entities.userMentions
|
|
483
|
+
.map((m) => m.screenName || '')
|
|
484
|
+
.filter((m) => m)
|
|
485
|
+
: null,
|
|
486
|
+
}
|
|
487
|
+
: null,
|
|
488
|
+
isRetweet: item.isRetweet || null,
|
|
489
|
+
isQuote: item.isQuote || null,
|
|
490
|
+
isReply: item.isReply || null,
|
|
491
|
+
}));
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
//# sourceMappingURL=twitter-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"twitter-tool.js","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/twitter-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,9 +19,9 @@ declare const WebCrawlToolParamsSchema: z.ZodObject<{
|
|
|
19
19
|
waitFor: number;
|
|
20
20
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
21
21
|
maxPages?: number | undefined;
|
|
22
|
-
crawlDepth?: number | undefined;
|
|
23
|
-
includePaths?: string[] | undefined;
|
|
24
22
|
excludePaths?: string[] | undefined;
|
|
23
|
+
includePaths?: string[] | undefined;
|
|
24
|
+
crawlDepth?: number | undefined;
|
|
25
25
|
}, {
|
|
26
26
|
url: string;
|
|
27
27
|
format?: "markdown" | undefined;
|
|
@@ -29,9 +29,9 @@ declare const WebCrawlToolParamsSchema: z.ZodObject<{
|
|
|
29
29
|
onlyMainContent?: boolean | undefined;
|
|
30
30
|
waitFor?: number | undefined;
|
|
31
31
|
maxPages?: number | undefined;
|
|
32
|
-
crawlDepth?: number | undefined;
|
|
33
|
-
includePaths?: string[] | undefined;
|
|
34
32
|
excludePaths?: string[] | undefined;
|
|
33
|
+
includePaths?: string[] | undefined;
|
|
34
|
+
crawlDepth?: number | undefined;
|
|
35
35
|
}>;
|
|
36
36
|
declare const WebCrawlToolResultSchema: z.ZodObject<{
|
|
37
37
|
url: z.ZodString;
|
|
@@ -54,6 +54,7 @@ declare const WebCrawlToolResultSchema: z.ZodObject<{
|
|
|
54
54
|
depth?: number | undefined;
|
|
55
55
|
}>, "many">;
|
|
56
56
|
totalPages: z.ZodNumber;
|
|
57
|
+
creditsUsed: z.ZodNumber;
|
|
57
58
|
metadata: z.ZodOptional<z.ZodObject<{
|
|
58
59
|
loadTime: z.ZodOptional<z.ZodNumber>;
|
|
59
60
|
crawlDepth: z.ZodOptional<z.ZodNumber>;
|
|
@@ -68,15 +69,16 @@ declare const WebCrawlToolResultSchema: z.ZodObject<{
|
|
|
68
69
|
maxPagesReached?: boolean | undefined;
|
|
69
70
|
}>>;
|
|
70
71
|
}, "strip", z.ZodTypeAny, {
|
|
71
|
-
url: string;
|
|
72
|
-
success: boolean;
|
|
73
72
|
error: string;
|
|
73
|
+
success: boolean;
|
|
74
|
+
url: string;
|
|
74
75
|
pages: {
|
|
75
76
|
content: string;
|
|
76
77
|
url: string;
|
|
77
78
|
title?: string | undefined;
|
|
78
79
|
depth?: number | undefined;
|
|
79
80
|
}[];
|
|
81
|
+
creditsUsed: number;
|
|
80
82
|
totalPages: number;
|
|
81
83
|
metadata?: {
|
|
82
84
|
loadTime?: number | undefined;
|
|
@@ -84,15 +86,16 @@ declare const WebCrawlToolResultSchema: z.ZodObject<{
|
|
|
84
86
|
maxPagesReached?: boolean | undefined;
|
|
85
87
|
} | undefined;
|
|
86
88
|
}, {
|
|
87
|
-
url: string;
|
|
88
|
-
success: boolean;
|
|
89
89
|
error: string;
|
|
90
|
+
success: boolean;
|
|
91
|
+
url: string;
|
|
90
92
|
pages: {
|
|
91
93
|
content: string;
|
|
92
94
|
url: string;
|
|
93
95
|
title?: string | undefined;
|
|
94
96
|
depth?: number | undefined;
|
|
95
97
|
}[];
|
|
98
|
+
creditsUsed: number;
|
|
96
99
|
totalPages: number;
|
|
97
100
|
metadata?: {
|
|
98
101
|
loadTime?: number | undefined;
|
|
@@ -122,9 +125,9 @@ export declare class WebCrawlTool extends ToolBubble<WebCrawlToolParams, WebCraw
|
|
|
122
125
|
waitFor: number;
|
|
123
126
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
124
127
|
maxPages?: number | undefined;
|
|
125
|
-
crawlDepth?: number | undefined;
|
|
126
|
-
includePaths?: string[] | undefined;
|
|
127
128
|
excludePaths?: string[] | undefined;
|
|
129
|
+
includePaths?: string[] | undefined;
|
|
130
|
+
crawlDepth?: number | undefined;
|
|
128
131
|
}, {
|
|
129
132
|
url: string;
|
|
130
133
|
format?: "markdown" | undefined;
|
|
@@ -132,9 +135,9 @@ export declare class WebCrawlTool extends ToolBubble<WebCrawlToolParams, WebCraw
|
|
|
132
135
|
onlyMainContent?: boolean | undefined;
|
|
133
136
|
waitFor?: number | undefined;
|
|
134
137
|
maxPages?: number | undefined;
|
|
135
|
-
crawlDepth?: number | undefined;
|
|
136
|
-
includePaths?: string[] | undefined;
|
|
137
138
|
excludePaths?: string[] | undefined;
|
|
139
|
+
includePaths?: string[] | undefined;
|
|
140
|
+
crawlDepth?: number | undefined;
|
|
138
141
|
}>;
|
|
139
142
|
static readonly resultSchema: z.ZodObject<{
|
|
140
143
|
url: z.ZodString;
|
|
@@ -157,6 +160,7 @@ export declare class WebCrawlTool extends ToolBubble<WebCrawlToolParams, WebCraw
|
|
|
157
160
|
depth?: number | undefined;
|
|
158
161
|
}>, "many">;
|
|
159
162
|
totalPages: z.ZodNumber;
|
|
163
|
+
creditsUsed: z.ZodNumber;
|
|
160
164
|
metadata: z.ZodOptional<z.ZodObject<{
|
|
161
165
|
loadTime: z.ZodOptional<z.ZodNumber>;
|
|
162
166
|
crawlDepth: z.ZodOptional<z.ZodNumber>;
|
|
@@ -171,15 +175,16 @@ export declare class WebCrawlTool extends ToolBubble<WebCrawlToolParams, WebCraw
|
|
|
171
175
|
maxPagesReached?: boolean | undefined;
|
|
172
176
|
}>>;
|
|
173
177
|
}, "strip", z.ZodTypeAny, {
|
|
174
|
-
url: string;
|
|
175
|
-
success: boolean;
|
|
176
178
|
error: string;
|
|
179
|
+
success: boolean;
|
|
180
|
+
url: string;
|
|
177
181
|
pages: {
|
|
178
182
|
content: string;
|
|
179
183
|
url: string;
|
|
180
184
|
title?: string | undefined;
|
|
181
185
|
depth?: number | undefined;
|
|
182
186
|
}[];
|
|
187
|
+
creditsUsed: number;
|
|
183
188
|
totalPages: number;
|
|
184
189
|
metadata?: {
|
|
185
190
|
loadTime?: number | undefined;
|
|
@@ -187,15 +192,16 @@ export declare class WebCrawlTool extends ToolBubble<WebCrawlToolParams, WebCraw
|
|
|
187
192
|
maxPagesReached?: boolean | undefined;
|
|
188
193
|
} | undefined;
|
|
189
194
|
}, {
|
|
190
|
-
url: string;
|
|
191
|
-
success: boolean;
|
|
192
195
|
error: string;
|
|
196
|
+
success: boolean;
|
|
197
|
+
url: string;
|
|
193
198
|
pages: {
|
|
194
199
|
content: string;
|
|
195
200
|
url: string;
|
|
196
201
|
title?: string | undefined;
|
|
197
202
|
depth?: number | undefined;
|
|
198
203
|
}[];
|
|
204
|
+
creditsUsed: number;
|
|
199
205
|
totalPages: number;
|
|
200
206
|
metadata?: {
|
|
201
207
|
loadTime?: number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-crawl-tool.d.ts","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/web-crawl-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5E,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqD5B,CAAC;AAGH,QAAA,MAAM,wBAAwB
|
|
1
|
+
{"version":3,"file":"web-crawl-tool.d.ts","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/web-crawl-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5E,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqD5B,CAAC;AAGH,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4B5B,CAAC;AAGH,KAAK,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACnE,KAAK,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACpE,KAAK,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAExE,qBAAa,YAAa,SAAQ,UAAU,CAC1C,kBAAkB,EAClB,kBAAkB,CACnB;IAEC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAoB;IAC1D,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA4B;IAClD,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA4B;IACxD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,gFAC+C;IAC/E,MAAM,CAAC,QAAQ,CAAC,eAAe,k/BAuB7B;IACF,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;gBAG5B,MAAM,GAAE,uBAAqC,EAC7C,OAAO,CAAC,EAAE,aAAa;IAKnB,aAAa,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgFzE;;OAEG;YACW,YAAY;CA6G3B"}
|