@bubblelab/bubble-core 0.1.124 → 0.1.125
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 +116 -116
- package/dist/bubbles/service-bubble/agi-inc.d.ts +128 -128
- package/dist/bubbles/service-bubble/ai-agent.d.ts +48 -48
- package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/ai-agent.js +10 -0
- package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
- package/dist/bubbles/service-bubble/airtable.d.ts +158 -158
- package/dist/bubbles/service-bubble/apify/apify.d.ts +12 -12
- package/dist/bubbles/service-bubble/ashby/ashby.d.ts +70 -70
- package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +94 -94
- package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +31 -31
- package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +33 -33
- package/dist/bubbles/service-bubble/confluence/confluence.d.ts +26 -26
- package/dist/bubbles/service-bubble/confluence/confluence.schema.d.ts +26 -26
- package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +124 -124
- package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +146 -146
- package/dist/bubbles/service-bubble/eleven-labs.d.ts +28 -28
- package/dist/bubbles/service-bubble/firecrawl.d.ts +660 -660
- package/dist/bubbles/service-bubble/followupboss.d.ts +160 -160
- package/dist/bubbles/service-bubble/fullenrich/fullenrich.d.ts +72 -72
- package/dist/bubbles/service-bubble/fullenrich/fullenrich.schema.d.ts +112 -112
- package/dist/bubbles/service-bubble/github.d.ts +92 -92
- package/dist/bubbles/service-bubble/gmail.d.ts +508 -508
- package/dist/bubbles/service-bubble/gmail.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/gmail.js +17 -6
- package/dist/bubbles/service-bubble/gmail.js.map +1 -1
- package/dist/bubbles/service-bubble/google-calendar.d.ts +138 -138
- package/dist/bubbles/service-bubble/google-drive.d.ts +106 -106
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +52 -52
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts +56 -56
- package/dist/bubbles/service-bubble/http.d.ts +20 -20
- package/dist/bubbles/service-bubble/insforge-db.d.ts +4 -4
- package/dist/bubbles/service-bubble/jira/jira.d.ts +96 -96
- package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +106 -106
- package/dist/bubbles/service-bubble/notion/notion.d.ts +482 -482
- package/dist/bubbles/service-bubble/postgresql.d.ts +4 -4
- package/dist/bubbles/service-bubble/resend.d.ts +30 -30
- package/dist/bubbles/service-bubble/resend.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/resend.js +13 -4
- package/dist/bubbles/service-bubble/resend.js.map +1 -1
- package/dist/bubbles/service-bubble/slack/slack.d.ts +496 -496
- package/dist/bubbles/service-bubble/storage.d.ts +20 -20
- package/dist/bubbles/service-bubble/stripe/stripe.d.ts +129 -129
- package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +147 -147
- package/dist/bubbles/service-bubble/telegram.d.ts +1579 -1579
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +19 -19
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +21 -21
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +12 -12
- package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +22 -22
- package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +66 -66
- package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +24 -24
- package/dist/bubbles/tool-bubble/instagram-tool.d.ts +14 -14
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts +2 -2
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts +2 -2
- package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +104 -104
- package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/list-capabilities-tool.d.ts +32 -32
- package/dist/bubbles/tool-bubble/people-search-tool.d.ts +78 -78
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +24 -24
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +36 -36
- package/dist/bubbles/tool-bubble/twitter-tool.d.ts +64 -64
- package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +18 -18
- package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/web-search-tool.d.ts +6 -6
- package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +18 -18
- package/dist/bubbles/tool-bubble/youtube-tool.d.ts +28 -28
- package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +24 -24
- package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +4 -4
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +74 -74
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +24 -24
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +30 -30
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +92 -92
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +4 -4
- package/dist/bubbles.json +9 -9
- package/dist/utils/markdown-to-html.d.ts +6 -0
- package/dist/utils/markdown-to-html.d.ts.map +1 -0
- package/dist/utils/markdown-to-html.js +68 -0
- package/dist/utils/markdown-to-html.js.map +1 -0
- package/package.json +2 -2
package/dist/bubbles.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "2.0.0",
|
|
3
|
-
"generatedAt": "2026-02-
|
|
3
|
+
"generatedAt": "2026-02-08T22:01:10.567Z",
|
|
4
4
|
"totalCount": 61,
|
|
5
5
|
"bubbles": [
|
|
6
6
|
{
|
|
@@ -7965,11 +7965,11 @@
|
|
|
7965
7965
|
},
|
|
7966
7966
|
"text": {
|
|
7967
7967
|
"type": "string",
|
|
7968
|
-
"description": "
|
|
7968
|
+
"description": "Email content (supports markdown — automatically converted to HTML for rendering)"
|
|
7969
7969
|
},
|
|
7970
7970
|
"html": {
|
|
7971
7971
|
"type": "string",
|
|
7972
|
-
"description": "HTML email content"
|
|
7972
|
+
"description": "HTML email content. If not provided and text is set, HTML is auto-generated from text."
|
|
7973
7973
|
},
|
|
7974
7974
|
"reply_to": {
|
|
7975
7975
|
"anyOf": [
|
|
@@ -8167,7 +8167,7 @@
|
|
|
8167
8167
|
}
|
|
8168
8168
|
]
|
|
8169
8169
|
},
|
|
8170
|
-
"usageExample": "// Send Email example\nconst resend_send_email = new ResendBubble({\n operation: \"send_email\", // Send an email via Resend\n from: \"Bubble Lab Team <welcome@hello.bubblelab.ai>\" // default, // Sender email address, should not be changed from <welcome@hello.bubblelab.ai> if resend account has not been setup with domain verification\n to: [\"example string\"], // Recipient email address(es). For multiple addresses, send as an array of strings. Max 50.\n cc: [\"example string\"], // CC email address(es). For multiple addresses, send as an array of strings.\n bcc: [\"example string\"], // BCC email address(es). For multiple addresses, send as an array of strings.\n subject: \"example string\", // Email subject line\n text: \"example string\", //
|
|
8170
|
+
"usageExample": "// Send Email example\nconst resend_send_email = new ResendBubble({\n operation: \"send_email\", // Send an email via Resend\n from: \"Bubble Lab Team <welcome@hello.bubblelab.ai>\" // default, // Sender email address, should not be changed from <welcome@hello.bubblelab.ai> if resend account has not been setup with domain verification\n to: [\"example string\"], // Recipient email address(es). For multiple addresses, send as an array of strings. Max 50.\n cc: [\"example string\"], // CC email address(es). For multiple addresses, send as an array of strings.\n bcc: [\"example string\"], // BCC email address(es). For multiple addresses, send as an array of strings.\n subject: \"example string\", // Email subject line\n text: \"example string\", // Email content (supports markdown — automatically converted to HTML for rendering)\n html: \"example string\", // HTML email content. If not provided and text is set, HTML is auto-generated from text.\n reply_to: [\"example string\"], // Reply-to email address(es). For multiple addresses, send as an array of strings.\n scheduled_at: \"example string\", // Schedule email to be sent later (ISO 8601 format or natural language like \"in 1 hour\")\n attachments: [{ filename: \"example string\" // Name of the attached file, content: \"example string\" // Base64 encoded file content, contentType: \"example string\" // MIME type of the file, path: \"example string\" // URL where the attachment file is hosted }], // Array of email attachments (max 40MB total per email)\n tags: [{ name: \"example string\" // Tag name (ASCII letters, numbers, underscores, dashes only, max 256 chars), value: \"example string\" // Tag value (ASCII letters, numbers, underscores, dashes only, max 256 chars) }], // Array of email tags for tracking and analytics\n headers: { \"example_key\": \"example string\" }, // Custom email headers (e.g., X-Custom-Header)\n});\n\nconst result = await resend_send_email.action();\n// outputSchema for result.data when operation === 'send_email':\n// {\n// operation: \"send_email\" // Send an email via Resend,\n// success: boolean // Whether the email was sent successfully,\n// email_id: string | undefined // Resend email ID if successful,\n// error: string // Error message if email sending failed\n// }\n\n\n// Get Email Status example\nconst resend_get_email_status = new ResendBubble({\n operation: \"get_email_status\", // Get the status of a sent email\n email_id: \"example string\", // Resend email ID to check status for\n});\n\nconst result = await resend_get_email_status.action();\n// outputSchema for result.data when operation === 'get_email_status':\n// {\n// operation: \"get_email_status\" // Get the status of a sent email,\n// success: boolean // Whether the status request was successful,\n// status: string | undefined // Current status of the email,\n// created_at: string | undefined // Timestamp when the email was created,\n// last_event: string | undefined // Last event that occurred with the email,\n// error: string // Error message if status request failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`resend failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
|
|
8171
8171
|
"requiredCredentials": [
|
|
8172
8172
|
"RESEND_CRED"
|
|
8173
8173
|
]
|
|
@@ -10213,11 +10213,11 @@
|
|
|
10213
10213
|
},
|
|
10214
10214
|
"body_text": {
|
|
10215
10215
|
"type": "string",
|
|
10216
|
-
"description": "[ONEOF:body]
|
|
10216
|
+
"description": "[ONEOF:body] Email body (supports markdown — automatically converted to HTML for rendering)"
|
|
10217
10217
|
},
|
|
10218
10218
|
"body_html": {
|
|
10219
10219
|
"type": "string",
|
|
10220
|
-
"description": "[ONEOF:body] HTML email body"
|
|
10220
|
+
"description": "[ONEOF:body] HTML email body. If not provided and body_text is set, HTML is auto-generated from body_text."
|
|
10221
10221
|
},
|
|
10222
10222
|
"reply_to": {
|
|
10223
10223
|
"type": "string",
|
|
@@ -10492,11 +10492,11 @@
|
|
|
10492
10492
|
},
|
|
10493
10493
|
"body_text": {
|
|
10494
10494
|
"type": "string",
|
|
10495
|
-
"description": "[ONEOF:body]
|
|
10495
|
+
"description": "[ONEOF:body] Email body (supports markdown — automatically converted to HTML for rendering)"
|
|
10496
10496
|
},
|
|
10497
10497
|
"body_html": {
|
|
10498
10498
|
"type": "string",
|
|
10499
|
-
"description": "[ONEOF:body] HTML email body"
|
|
10499
|
+
"description": "[ONEOF:body] HTML email body. If not provided and body_text is set, HTML is auto-generated from body_text."
|
|
10500
10500
|
},
|
|
10501
10501
|
"reply_to": {
|
|
10502
10502
|
"type": "string",
|
|
@@ -12170,7 +12170,7 @@
|
|
|
12170
12170
|
}
|
|
12171
12171
|
]
|
|
12172
12172
|
},
|
|
12173
|
-
"usageExample": "// Send Email example\nconst gmail_send_email = new GmailBubble({\n operation: \"send_email\", // Send an email message\n to: [\"example string\"], // List of recipient email addresses\n cc: [\"example string\"], // List of CC recipient email addresses\n bcc: [\"example string\"], // List of BCC recipient email addresses\n subject: \"example string\", // Email subject line\n body_text: \"example string\", // [ONEOF:body] Plain text email body\n body_html: \"example string\", // [ONEOF:body] HTML email body\n reply_to: \"example string\", // Reply-to email address\n thread_id: \"example string\", // Thread ID to reply to (for threaded conversations)\n});\n\nconst result = await gmail_send_email.action();\n// outputSchema for result.data when operation === 'send_email':\n// {\n// operation: \"send_email\" // Send an email message,\n// success: boolean // Whether the email was sent successfully,\n// message_id: string | undefined // Sent message ID,\n// thread_id: string | undefined // Thread ID,\n// error: string // Error message if operation failed\n// }\n\n\n// List Emails example\nconst gmail_list_emails = new GmailBubble({\n operation: \"list_emails\", // List emails in the user mailbox\n query: \"example string\", // Gmail search query (e.g., \"from:user@example.com is:unread\")\n label_ids: [\"example string\"], // Filter by specific label IDs\n include_spam_trash: false // default, // Include messages from SPAM and TRASH\n max_results: 100 // default, // Maximum number of messages to return\n page_token: \"example string\", // Token for pagination to get next page\n include_details: true // default, // Whether to fetch full message details including snippet, headers, and body\n});\n\nconst result = await gmail_list_emails.action();\n// outputSchema for result.data when operation === 'list_emails':\n// {\n// operation: \"list_emails\" // List emails in the user mailbox,\n// success: boolean // Whether the email list was retrieved successfully,\n// messages: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure }[] | undefined // List of email messages,\n// next_page_token: string | undefined // Token for fetching next page,\n// result_size_estimate: number | undefined // Estimated total number of results,\n// error: string // Error message if operation failed\n// }\n\n\n// Get Email example\nconst gmail_get_email = new GmailBubble({\n operation: \"get_email\", // Get a specific email message\n message_id: \"example string\", // Gmail message ID to retrieve\n format: \"minimal\" // options: \"minimal\", \"full\", \"raw\", \"metadata\", // Format to return the message in\n metadata_headers: [\"example string\"], // List of headers to include when format is metadata\n});\n\nconst result = await gmail_get_email.action();\n// outputSchema for result.data when operation === 'get_email':\n// {\n// operation: \"get_email\" // Get a specific email message,\n// success: boolean // Whether the email was retrieved successfully,\n// message: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure } | undefined // Email message details,\n// error: string // Error message if operation failed\n// }\n\n\n// Search Emails example\nconst gmail_search_emails = new GmailBubble({\n operation: \"search_emails\", // Search emails with query\n query: \"example string\", // Gmail search query string\n max_results: 50 // default, // Maximum number of results to return\n include_spam_trash: false // default, // Include messages from SPAM and TRASH\n});\n\nconst result = await gmail_search_emails.action();\n// outputSchema for result.data when operation === 'search_emails':\n// {\n// operation: \"search_emails\" // Search emails with query,\n// success: boolean // Whether the email search was completed successfully,\n// messages: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure }[] | undefined // List of matching email messages,\n// result_size_estimate: number | undefined // Estimated total number of results,\n// error: string // Error message if operation failed\n// }\n\n\n// Mark As Read example\nconst gmail_mark_as_read = new GmailBubble({\n operation: \"mark_as_read\", // Mark one or more messages as read\n message_ids: [\"example string\"], // List of message IDs to mark as read\n});\n\nconst result = await gmail_mark_as_read.action();\n// outputSchema for result.data when operation === 'mark_as_read':\n// {\n// operation: \"mark_as_read\" // Mark one or more messages as read,\n// success: boolean // Whether the messages were marked as read successfully,\n// modified_messages: string[] | undefined // IDs of messages that were modified,\n// error: string // Error message if operation failed\n// }\n\n\n// Mark As Unread example\nconst gmail_mark_as_unread = new GmailBubble({\n operation: \"mark_as_unread\", // Mark one or more messages as unread\n message_ids: [\"example string\"], // List of message IDs to mark as unread\n});\n\nconst result = await gmail_mark_as_unread.action();\n// outputSchema for result.data when operation === 'mark_as_unread':\n// {\n// operation: \"mark_as_unread\" // Mark one or more messages as unread,\n// success: boolean // Whether the messages were marked as unread successfully,\n// modified_messages: string[] | undefined // IDs of messages that were modified,\n// error: string // Error message if operation failed\n// }\n\n\n// Create Draft example\nconst gmail_create_draft = new GmailBubble({\n operation: \"create_draft\", // Create a draft email\n to: [\"example string\"], // List of recipient email addresses\n cc: [\"example string\"], // List of CC recipient email addresses\n bcc: [\"example string\"], // List of BCC recipient email addresses\n subject: \"example string\", // Email subject line\n body_text: \"example string\", // [ONEOF:body] Plain text email body\n body_html: \"example string\", // [ONEOF:body] HTML email body\n reply_to: \"example string\", // Reply-to email address\n thread_id: \"example string\", // Thread ID to reply to (for threaded conversations)\n});\n\nconst result = await gmail_create_draft.action();\n// outputSchema for result.data when operation === 'create_draft':\n// {\n// operation: \"create_draft\" // Create a draft email,\n// success: boolean // Whether the draft was created successfully,\n// draft: { id: string // Unique draft identifier, message: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure } // Draft message content } | undefined // Created draft,\n// error: string // Error message if operation failed\n// }\n\n\n// Send Draft example\nconst gmail_send_draft = new GmailBubble({\n operation: \"send_draft\", // Send a draft email\n draft_id: \"example string\", // Gmail draft ID to send\n});\n\nconst result = await gmail_send_draft.action();\n// outputSchema for result.data when operation === 'send_draft':\n// {\n// operation: \"send_draft\" // Send a draft email,\n// success: boolean // Whether the draft was sent successfully,\n// message_id: string | undefined // Sent message ID,\n// thread_id: string | undefined // Thread ID,\n// error: string // Error message if operation failed\n// }\n\n\n// List Drafts example\nconst gmail_list_drafts = new GmailBubble({\n operation: \"list_drafts\", // List draft emails\n query: \"example string\", // Search query to filter drafts\n max_results: 100 // default, // Maximum number of drafts to return\n page_token: \"example string\", // Token for pagination to get next page\n include_spam_trash: false // default, // Include drafts from SPAM and TRASH\n});\n\nconst result = await gmail_list_drafts.action();\n// outputSchema for result.data when operation === 'list_drafts':\n// {\n// operation: \"list_drafts\" // List draft emails,\n// success: boolean // Whether the draft list was retrieved successfully,\n// drafts: { id: string // Unique draft identifier, message: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure } // Draft message content }[] | undefined // List of drafts,\n// next_page_token: string | undefined // Token for fetching next page,\n// result_size_estimate: number | undefined // Estimated total number of results,\n// error: string // Error message if operation failed\n// }\n\n\n// Delete Email example\nconst gmail_delete_email = new GmailBubble({\n operation: \"delete_email\", // Delete an email message permanently\n message_id: \"example string\", // Gmail message ID to delete\n});\n\nconst result = await gmail_delete_email.action();\n// outputSchema for result.data when operation === 'delete_email':\n// {\n// operation: \"delete_email\" // Delete an email message permanently,\n// success: boolean // Whether the email was deleted successfully,\n// deleted_message_id: string | undefined // ID of the deleted message,\n// error: string // Error message if operation failed\n// }\n\n\n// Trash Email example\nconst gmail_trash_email = new GmailBubble({\n operation: \"trash_email\", // Move an email message to trash\n message_id: \"example string\", // Gmail message ID to move to trash\n});\n\nconst result = await gmail_trash_email.action();\n// outputSchema for result.data when operation === 'trash_email':\n// {\n// operation: \"trash_email\" // Move an email message to trash,\n// success: boolean // Whether the email was moved to trash successfully,\n// trashed_message_id: string | undefined // ID of the trashed message,\n// error: string // Error message if operation failed\n// }\n\n\n// List Threads example\nconst gmail_list_threads = new GmailBubble({\n operation: \"list_threads\", // List email threads\n query: \"example string\", // Gmail search query to filter threads\n label_ids: [\"example string\"], // Filter by specific label IDs\n include_spam_trash: false // default, // Include threads from SPAM and TRASH\n max_results: 100 // default, // Maximum number of threads to return\n page_token: \"example string\", // Token for pagination to get next page\n});\n\nconst result = await gmail_list_threads.action();\n// outputSchema for result.data when operation === 'list_threads':\n// {\n// operation: \"list_threads\" // List email threads,\n// success: boolean // Whether the thread list was retrieved successfully,\n// threads: { id: string // Unique thread identifier, historyId: string | undefined // Last history record ID, messages: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure }[] | undefined // Messages in this thread, snippet: string | undefined // Thread snippet }[] | undefined // List of email threads,\n// next_page_token: string | undefined // Token for fetching next page,\n// result_size_estimate: number | undefined // Estimated total number of results,\n// error: string // Error message if operation failed\n// }\n\n\n// List Labels example\nconst gmail_list_labels = new GmailBubble({\n operation: \"list_labels\", // List all labels in mailbox\n});\n\nconst result = await gmail_list_labels.action();\n// outputSchema for result.data when operation === 'list_labels':\n// {\n// operation: \"list_labels\" // List all labels in mailbox,\n// success: boolean // Whether the label list was retrieved successfully,\n// labels: { id: string // Label ID, name: string // Label name, type: \"system\" | \"user\" | undefined // Label type: system (built-in) or user (custom), messageListVisibility: \"show\" | \"hide\" | undefined // Visibility in message list, labelListVisibility: \"labelShow\" | \"labelShowIfUnread\" | \"labelHide\" | undefined // Visibility in label list }[] | undefined // List of labels (both system and user labels),\n// error: string // Error message if operation failed\n// }\n\n\n// Create Label example\nconst gmail_create_label = new GmailBubble({\n operation: \"create_label\", // Create a new custom label\n name: \"example string\", // Label name (display name)\n label_list_visibility: \"labelShow\" // options: \"labelShow\", \"labelShowIfUnread\", \"labelHide\", // Visibility in label list\n message_list_visibility: \"show\" // options: \"show\", \"hide\", // Visibility in message list\n background_color: \"example string\", // Background color in hex format (e.g., #000000)\n text_color: \"example string\", // Text color in hex format (e.g., #ffffff)\n});\n\nconst result = await gmail_create_label.action();\n// outputSchema for result.data when operation === 'create_label':\n// {\n// operation: \"create_label\" // Create a new custom label,\n// success: boolean // Whether the label was created successfully,\n// label: { id: string // Label ID, name: string // Label name, type: \"system\" | \"user\" | undefined // Label type: system (built-in) or user (custom), messageListVisibility: \"show\" | \"hide\" | undefined // Visibility in message list, labelListVisibility: \"labelShow\" | \"labelShowIfUnread\" | \"labelHide\" | undefined // Visibility in label list } | undefined // Created label details,\n// error: string // Error message if operation failed\n// }\n\n\n// Modify Message Labels example\nconst gmail_modify_message_labels = new GmailBubble({\n operation: \"modify_message_labels\", // Add or remove labels from a message\n message_id: \"example string\", // Gmail message ID to modify\n add_label_ids: [\"example string\"], // List of label IDs to add (max 100)\n remove_label_ids: [\"example string\"], // List of label IDs to remove (max 100)\n});\n\nconst result = await gmail_modify_message_labels.action();\n// outputSchema for result.data when operation === 'modify_message_labels':\n// {\n// operation: \"modify_message_labels\" // Add or remove labels from a message,\n// success: boolean // Whether the labels were modified successfully,\n// message_id: string | undefined // Modified message ID,\n// label_ids: string[] | undefined // Current label IDs after modification,\n// error: string // Error message if operation failed\n// }\n\n\n// Modify Thread Labels example\nconst gmail_modify_thread_labels = new GmailBubble({\n operation: \"modify_thread_labels\", // Add or remove labels from all messages in a thread\n thread_id: \"example string\", // Gmail thread ID to modify\n add_label_ids: [\"example string\"], // List of label IDs to add to all messages in thread (max 100)\n remove_label_ids: [\"example string\"], // List of label IDs to remove from all messages in thread (max 100)\n});\n\nconst result = await gmail_modify_thread_labels.action();\n// outputSchema for result.data when operation === 'modify_thread_labels':\n// {\n// operation: \"modify_thread_labels\" // Add or remove labels from all messages in a thread,\n// success: boolean // Whether the thread labels were modified successfully,\n// thread_id: string | undefined // Modified thread ID,\n// error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`gmail failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
|
|
12173
|
+
"usageExample": "// Send Email example\nconst gmail_send_email = new GmailBubble({\n operation: \"send_email\", // Send an email message\n to: [\"example string\"], // List of recipient email addresses\n cc: [\"example string\"], // List of CC recipient email addresses\n bcc: [\"example string\"], // List of BCC recipient email addresses\n subject: \"example string\", // Email subject line\n body_text: \"example string\", // [ONEOF:body] Email body (supports markdown — automatically converted to HTML for rendering)\n body_html: \"example string\", // [ONEOF:body] HTML email body. If not provided and body_text is set, HTML is auto-generated from body_text.\n reply_to: \"example string\", // Reply-to email address\n thread_id: \"example string\", // Thread ID to reply to (for threaded conversations)\n});\n\nconst result = await gmail_send_email.action();\n// outputSchema for result.data when operation === 'send_email':\n// {\n// operation: \"send_email\" // Send an email message,\n// success: boolean // Whether the email was sent successfully,\n// message_id: string | undefined // Sent message ID,\n// thread_id: string | undefined // Thread ID,\n// error: string // Error message if operation failed\n// }\n\n\n// List Emails example\nconst gmail_list_emails = new GmailBubble({\n operation: \"list_emails\", // List emails in the user mailbox\n query: \"example string\", // Gmail search query (e.g., \"from:user@example.com is:unread\")\n label_ids: [\"example string\"], // Filter by specific label IDs\n include_spam_trash: false // default, // Include messages from SPAM and TRASH\n max_results: 100 // default, // Maximum number of messages to return\n page_token: \"example string\", // Token for pagination to get next page\n include_details: true // default, // Whether to fetch full message details including snippet, headers, and body\n});\n\nconst result = await gmail_list_emails.action();\n// outputSchema for result.data when operation === 'list_emails':\n// {\n// operation: \"list_emails\" // List emails in the user mailbox,\n// success: boolean // Whether the email list was retrieved successfully,\n// messages: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure }[] | undefined // List of email messages,\n// next_page_token: string | undefined // Token for fetching next page,\n// result_size_estimate: number | undefined // Estimated total number of results,\n// error: string // Error message if operation failed\n// }\n\n\n// Get Email example\nconst gmail_get_email = new GmailBubble({\n operation: \"get_email\", // Get a specific email message\n message_id: \"example string\", // Gmail message ID to retrieve\n format: \"minimal\" // options: \"minimal\", \"full\", \"raw\", \"metadata\", // Format to return the message in\n metadata_headers: [\"example string\"], // List of headers to include when format is metadata\n});\n\nconst result = await gmail_get_email.action();\n// outputSchema for result.data when operation === 'get_email':\n// {\n// operation: \"get_email\" // Get a specific email message,\n// success: boolean // Whether the email was retrieved successfully,\n// message: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure } | undefined // Email message details,\n// error: string // Error message if operation failed\n// }\n\n\n// Search Emails example\nconst gmail_search_emails = new GmailBubble({\n operation: \"search_emails\", // Search emails with query\n query: \"example string\", // Gmail search query string\n max_results: 50 // default, // Maximum number of results to return\n include_spam_trash: false // default, // Include messages from SPAM and TRASH\n});\n\nconst result = await gmail_search_emails.action();\n// outputSchema for result.data when operation === 'search_emails':\n// {\n// operation: \"search_emails\" // Search emails with query,\n// success: boolean // Whether the email search was completed successfully,\n// messages: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure }[] | undefined // List of matching email messages,\n// result_size_estimate: number | undefined // Estimated total number of results,\n// error: string // Error message if operation failed\n// }\n\n\n// Mark As Read example\nconst gmail_mark_as_read = new GmailBubble({\n operation: \"mark_as_read\", // Mark one or more messages as read\n message_ids: [\"example string\"], // List of message IDs to mark as read\n});\n\nconst result = await gmail_mark_as_read.action();\n// outputSchema for result.data when operation === 'mark_as_read':\n// {\n// operation: \"mark_as_read\" // Mark one or more messages as read,\n// success: boolean // Whether the messages were marked as read successfully,\n// modified_messages: string[] | undefined // IDs of messages that were modified,\n// error: string // Error message if operation failed\n// }\n\n\n// Mark As Unread example\nconst gmail_mark_as_unread = new GmailBubble({\n operation: \"mark_as_unread\", // Mark one or more messages as unread\n message_ids: [\"example string\"], // List of message IDs to mark as unread\n});\n\nconst result = await gmail_mark_as_unread.action();\n// outputSchema for result.data when operation === 'mark_as_unread':\n// {\n// operation: \"mark_as_unread\" // Mark one or more messages as unread,\n// success: boolean // Whether the messages were marked as unread successfully,\n// modified_messages: string[] | undefined // IDs of messages that were modified,\n// error: string // Error message if operation failed\n// }\n\n\n// Create Draft example\nconst gmail_create_draft = new GmailBubble({\n operation: \"create_draft\", // Create a draft email\n to: [\"example string\"], // List of recipient email addresses\n cc: [\"example string\"], // List of CC recipient email addresses\n bcc: [\"example string\"], // List of BCC recipient email addresses\n subject: \"example string\", // Email subject line\n body_text: \"example string\", // [ONEOF:body] Email body (supports markdown — automatically converted to HTML for rendering)\n body_html: \"example string\", // [ONEOF:body] HTML email body. If not provided and body_text is set, HTML is auto-generated from body_text.\n reply_to: \"example string\", // Reply-to email address\n thread_id: \"example string\", // Thread ID to reply to (for threaded conversations)\n});\n\nconst result = await gmail_create_draft.action();\n// outputSchema for result.data when operation === 'create_draft':\n// {\n// operation: \"create_draft\" // Create a draft email,\n// success: boolean // Whether the draft was created successfully,\n// draft: { id: string // Unique draft identifier, message: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure } // Draft message content } | undefined // Created draft,\n// error: string // Error message if operation failed\n// }\n\n\n// Send Draft example\nconst gmail_send_draft = new GmailBubble({\n operation: \"send_draft\", // Send a draft email\n draft_id: \"example string\", // Gmail draft ID to send\n});\n\nconst result = await gmail_send_draft.action();\n// outputSchema for result.data when operation === 'send_draft':\n// {\n// operation: \"send_draft\" // Send a draft email,\n// success: boolean // Whether the draft was sent successfully,\n// message_id: string | undefined // Sent message ID,\n// thread_id: string | undefined // Thread ID,\n// error: string // Error message if operation failed\n// }\n\n\n// List Drafts example\nconst gmail_list_drafts = new GmailBubble({\n operation: \"list_drafts\", // List draft emails\n query: \"example string\", // Search query to filter drafts\n max_results: 100 // default, // Maximum number of drafts to return\n page_token: \"example string\", // Token for pagination to get next page\n include_spam_trash: false // default, // Include drafts from SPAM and TRASH\n});\n\nconst result = await gmail_list_drafts.action();\n// outputSchema for result.data when operation === 'list_drafts':\n// {\n// operation: \"list_drafts\" // List draft emails,\n// success: boolean // Whether the draft list was retrieved successfully,\n// drafts: { id: string // Unique draft identifier, message: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure } // Draft message content }[] | undefined // List of drafts,\n// next_page_token: string | undefined // Token for fetching next page,\n// result_size_estimate: number | undefined // Estimated total number of results,\n// error: string // Error message if operation failed\n// }\n\n\n// Delete Email example\nconst gmail_delete_email = new GmailBubble({\n operation: \"delete_email\", // Delete an email message permanently\n message_id: \"example string\", // Gmail message ID to delete\n});\n\nconst result = await gmail_delete_email.action();\n// outputSchema for result.data when operation === 'delete_email':\n// {\n// operation: \"delete_email\" // Delete an email message permanently,\n// success: boolean // Whether the email was deleted successfully,\n// deleted_message_id: string | undefined // ID of the deleted message,\n// error: string // Error message if operation failed\n// }\n\n\n// Trash Email example\nconst gmail_trash_email = new GmailBubble({\n operation: \"trash_email\", // Move an email message to trash\n message_id: \"example string\", // Gmail message ID to move to trash\n});\n\nconst result = await gmail_trash_email.action();\n// outputSchema for result.data when operation === 'trash_email':\n// {\n// operation: \"trash_email\" // Move an email message to trash,\n// success: boolean // Whether the email was moved to trash successfully,\n// trashed_message_id: string | undefined // ID of the trashed message,\n// error: string // Error message if operation failed\n// }\n\n\n// List Threads example\nconst gmail_list_threads = new GmailBubble({\n operation: \"list_threads\", // List email threads\n query: \"example string\", // Gmail search query to filter threads\n label_ids: [\"example string\"], // Filter by specific label IDs\n include_spam_trash: false // default, // Include threads from SPAM and TRASH\n max_results: 100 // default, // Maximum number of threads to return\n page_token: \"example string\", // Token for pagination to get next page\n});\n\nconst result = await gmail_list_threads.action();\n// outputSchema for result.data when operation === 'list_threads':\n// {\n// operation: \"list_threads\" // List email threads,\n// success: boolean // Whether the thread list was retrieved successfully,\n// threads: { id: string // Unique thread identifier, historyId: string | undefined // Last history record ID, messages: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure }[] | undefined // Messages in this thread, snippet: string | undefined // Thread snippet }[] | undefined // List of email threads,\n// next_page_token: string | undefined // Token for fetching next page,\n// result_size_estimate: number | undefined // Estimated total number of results,\n// error: string // Error message if operation failed\n// }\n\n\n// List Labels example\nconst gmail_list_labels = new GmailBubble({\n operation: \"list_labels\", // List all labels in mailbox\n});\n\nconst result = await gmail_list_labels.action();\n// outputSchema for result.data when operation === 'list_labels':\n// {\n// operation: \"list_labels\" // List all labels in mailbox,\n// success: boolean // Whether the label list was retrieved successfully,\n// labels: { id: string // Label ID, name: string // Label name, type: \"system\" | \"user\" | undefined // Label type: system (built-in) or user (custom), messageListVisibility: \"show\" | \"hide\" | undefined // Visibility in message list, labelListVisibility: \"labelShow\" | \"labelShowIfUnread\" | \"labelHide\" | undefined // Visibility in label list }[] | undefined // List of labels (both system and user labels),\n// error: string // Error message if operation failed\n// }\n\n\n// Create Label example\nconst gmail_create_label = new GmailBubble({\n operation: \"create_label\", // Create a new custom label\n name: \"example string\", // Label name (display name)\n label_list_visibility: \"labelShow\" // options: \"labelShow\", \"labelShowIfUnread\", \"labelHide\", // Visibility in label list\n message_list_visibility: \"show\" // options: \"show\", \"hide\", // Visibility in message list\n background_color: \"example string\", // Background color in hex format (e.g., #000000)\n text_color: \"example string\", // Text color in hex format (e.g., #ffffff)\n});\n\nconst result = await gmail_create_label.action();\n// outputSchema for result.data when operation === 'create_label':\n// {\n// operation: \"create_label\" // Create a new custom label,\n// success: boolean // Whether the label was created successfully,\n// label: { id: string // Label ID, name: string // Label name, type: \"system\" | \"user\" | undefined // Label type: system (built-in) or user (custom), messageListVisibility: \"show\" | \"hide\" | undefined // Visibility in message list, labelListVisibility: \"labelShow\" | \"labelShowIfUnread\" | \"labelHide\" | undefined // Visibility in label list } | undefined // Created label details,\n// error: string // Error message if operation failed\n// }\n\n\n// Modify Message Labels example\nconst gmail_modify_message_labels = new GmailBubble({\n operation: \"modify_message_labels\", // Add or remove labels from a message\n message_id: \"example string\", // Gmail message ID to modify\n add_label_ids: [\"example string\"], // List of label IDs to add (max 100)\n remove_label_ids: [\"example string\"], // List of label IDs to remove (max 100)\n});\n\nconst result = await gmail_modify_message_labels.action();\n// outputSchema for result.data when operation === 'modify_message_labels':\n// {\n// operation: \"modify_message_labels\" // Add or remove labels from a message,\n// success: boolean // Whether the labels were modified successfully,\n// message_id: string | undefined // Modified message ID,\n// label_ids: string[] | undefined // Current label IDs after modification,\n// error: string // Error message if operation failed\n// }\n\n\n// Modify Thread Labels example\nconst gmail_modify_thread_labels = new GmailBubble({\n operation: \"modify_thread_labels\", // Add or remove labels from all messages in a thread\n thread_id: \"example string\", // Gmail thread ID to modify\n add_label_ids: [\"example string\"], // List of label IDs to add to all messages in thread (max 100)\n remove_label_ids: [\"example string\"], // List of label IDs to remove from all messages in thread (max 100)\n});\n\nconst result = await gmail_modify_thread_labels.action();\n// outputSchema for result.data when operation === 'modify_thread_labels':\n// {\n// operation: \"modify_thread_labels\" // Add or remove labels from all messages in a thread,\n// success: boolean // Whether the thread labels were modified successfully,\n// thread_id: string | undefined // Modified thread ID,\n// error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`gmail failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
|
|
12174
12174
|
"requiredCredentials": [
|
|
12175
12175
|
"GMAIL_CRED"
|
|
12176
12176
|
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-to-html.d.ts","sourceRoot":"","sources":["../../src/utils/markdown-to-html.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgFnD"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight markdown-to-HTML converter for email rendering.
|
|
3
|
+
* Handles the most common markdown patterns without external dependencies.
|
|
4
|
+
*/
|
|
5
|
+
export function markdownToHtml(text) {
|
|
6
|
+
// Escape HTML entities first
|
|
7
|
+
let html = text
|
|
8
|
+
.replace(/&/g, '&')
|
|
9
|
+
.replace(/</g, '<')
|
|
10
|
+
.replace(/>/g, '>');
|
|
11
|
+
// Code blocks (``` ... ```) — must come before inline processing
|
|
12
|
+
html = html.replace(/```(\w*)\n([\s\S]*?)```/g, (_match, _lang, code) => {
|
|
13
|
+
return `<pre><code>${code.trimEnd()}</code></pre>`;
|
|
14
|
+
});
|
|
15
|
+
// Inline code (`...`)
|
|
16
|
+
html = html.replace(/`([^`]+)`/g, '<code>$1</code>');
|
|
17
|
+
// Headers (# to ######)
|
|
18
|
+
html = html.replace(/^#{6}\s+(.+)$/gm, '<h6>$1</h6>');
|
|
19
|
+
html = html.replace(/^#{5}\s+(.+)$/gm, '<h5>$1</h5>');
|
|
20
|
+
html = html.replace(/^#{4}\s+(.+)$/gm, '<h4>$1</h4>');
|
|
21
|
+
html = html.replace(/^#{3}\s+(.+)$/gm, '<h3>$1</h3>');
|
|
22
|
+
html = html.replace(/^#{2}\s+(.+)$/gm, '<h2>$1</h2>');
|
|
23
|
+
html = html.replace(/^#{1}\s+(.+)$/gm, '<h1>$1</h1>');
|
|
24
|
+
// Horizontal rule
|
|
25
|
+
html = html.replace(/^[-*_]{3,}\s*$/gm, '<hr>');
|
|
26
|
+
// Bold + italic (***text*** or ___text___)
|
|
27
|
+
html = html.replace(/\*{3}(.+?)\*{3}/g, '<strong><em>$1</em></strong>');
|
|
28
|
+
html = html.replace(/_{3}(.+?)_{3}/g, '<strong><em>$1</em></strong>');
|
|
29
|
+
// Bold (**text** or __text__)
|
|
30
|
+
html = html.replace(/\*{2}(.+?)\*{2}/g, '<strong>$1</strong>');
|
|
31
|
+
html = html.replace(/_{2}(.+?)_{2}/g, '<strong>$1</strong>');
|
|
32
|
+
// Italic (*text* or _text_)
|
|
33
|
+
html = html.replace(/\*(.+?)\*/g, '<em>$1</em>');
|
|
34
|
+
html = html.replace(/(?<!\w)_(.+?)_(?!\w)/g, '<em>$1</em>');
|
|
35
|
+
// Images  — must come before links
|
|
36
|
+
html = html.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '<img src="$2" alt="$1">');
|
|
37
|
+
// Links [text](url)
|
|
38
|
+
html = html.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2">$1</a>');
|
|
39
|
+
// Unordered lists (- or * at start of line)
|
|
40
|
+
html = html.replace(/(?:^[\t ]*[-*]\s+.+$\n?)+/gm, (block) => {
|
|
41
|
+
const items = block
|
|
42
|
+
.trim()
|
|
43
|
+
.split('\n')
|
|
44
|
+
.map((line) => `<li>${line.replace(/^[\t ]*[-*]\s+/, '')}</li>`)
|
|
45
|
+
.join('\n');
|
|
46
|
+
return `<ul>\n${items}\n</ul>\n`;
|
|
47
|
+
});
|
|
48
|
+
// Ordered lists (1. 2. etc.)
|
|
49
|
+
html = html.replace(/(?:^[\t ]*\d+\.\s+.+$\n?)+/gm, (block) => {
|
|
50
|
+
const items = block
|
|
51
|
+
.trim()
|
|
52
|
+
.split('\n')
|
|
53
|
+
.map((line) => `<li>${line.replace(/^[\t ]*\d+\.\s+/, '')}</li>`)
|
|
54
|
+
.join('\n');
|
|
55
|
+
return `<ol>\n${items}\n</ol>\n`;
|
|
56
|
+
});
|
|
57
|
+
// Blockquotes (> text)
|
|
58
|
+
html = html.replace(/(?:^>\s?.+$\n?)+/gm, (block) => {
|
|
59
|
+
const content = block.replace(/^>\s?/gm, '').trim();
|
|
60
|
+
return `<blockquote>${content}</blockquote>\n`;
|
|
61
|
+
});
|
|
62
|
+
// Paragraphs — wrap remaining loose text blocks in <p> tags
|
|
63
|
+
html = html.replace(/^(?!<(?:h[1-6]|ul|ol|li|pre|code|blockquote|hr|\/))(.+)$/gm, '<p>$1</p>');
|
|
64
|
+
// Clean up double line breaks between block elements
|
|
65
|
+
html = html.replace(/\n{2,}/g, '\n');
|
|
66
|
+
return html.trim();
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=markdown-to-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-to-html.js","sourceRoot":"","sources":["../../src/utils/markdown-to-html.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,6BAA6B;IAC7B,IAAI,IAAI,GAAG,IAAI;SACZ,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAEzB,iEAAiE;IACjE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtE,OAAO,cAAc,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,sBAAsB;IACtB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAErD,wBAAwB;IACxB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IACtD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IACtD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IACtD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IACtD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IACtD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAEtD,kBAAkB;IAClB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAEhD,2CAA2C;IAC3C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,8BAA8B,CAAC,CAAC;IACxE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,8BAA8B,CAAC,CAAC;IAEtE,8BAA8B;IAC9B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;IAC/D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IAE7D,4BAA4B;IAC5B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACjD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC;IAE5D,8CAA8C;IAC9C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,yBAAyB,CAAC,CAAC;IAE5E,oBAAoB;IACpB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;IAEvE,4CAA4C;IAC5C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3D,MAAM,KAAK,GAAG,KAAK;aAChB,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,OAAO,CAAC;aAC/D,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,SAAS,KAAK,WAAW,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5D,MAAM,KAAK,GAAG,KAAK;aAChB,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,CAAC;aAChE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,SAAS,KAAK,WAAW,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,uBAAuB;IACvB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,EAAE;QACrD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,OAAO,eAAe,OAAO,iBAAiB,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,4DAA4D,EAC5D,WAAW,CACZ,CAAC;IAEF,qDAAqD;IACrD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAErC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bubblelab/bubble-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.125",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"puppeteer-core": "^24.10.0",
|
|
41
41
|
"resend": "^4.8.0",
|
|
42
42
|
"zod": "^3.24.1",
|
|
43
|
-
"@bubblelab/shared-schemas": "0.1.
|
|
43
|
+
"@bubblelab/shared-schemas": "0.1.125"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/node": "^20.12.12",
|