@bubblelab/bubble-core 0.1.159 → 0.1.160

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/dist/bubble-bundle.d.ts +186 -164
  2. package/dist/bubble-factory.d.ts.map +1 -1
  3. package/dist/bubble-factory.js +4 -0
  4. package/dist/bubble-factory.js.map +1 -1
  5. package/dist/bubble-flow/bubble-flow-class.js.map +1 -1
  6. package/dist/bubbles/service-bubble/agi-inc.d.ts +60 -60
  7. package/dist/bubbles/service-bubble/ai-agent.d.ts +8 -8
  8. package/dist/bubbles/service-bubble/airtable.d.ts +50 -50
  9. package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts +2 -2
  10. package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +4 -4
  11. package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +12 -12
  12. package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts +2 -2
  13. package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +8 -8
  14. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts +52 -52
  15. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +18 -18
  16. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +10 -10
  17. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +27 -27
  18. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +8 -8
  19. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +131 -131
  20. package/dist/bubbles/service-bubble/apify/apify.d.ts +12 -12
  21. package/dist/bubbles/service-bubble/ashby/ashby.d.ts +62 -62
  22. package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +84 -84
  23. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +28 -28
  24. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +30 -30
  25. package/dist/bubbles/service-bubble/confluence/confluence.d.ts +24 -24
  26. package/dist/bubbles/service-bubble/confluence/confluence.schema.d.ts +24 -24
  27. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +126 -126
  28. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +158 -158
  29. package/dist/bubbles/service-bubble/eleven-labs.d.ts +28 -28
  30. package/dist/bubbles/service-bubble/firecrawl.d.ts +628 -628
  31. package/dist/bubbles/service-bubble/followupboss.d.ts +140 -140
  32. package/dist/bubbles/service-bubble/fullenrich/fullenrich.d.ts +68 -68
  33. package/dist/bubbles/service-bubble/fullenrich/fullenrich.schema.d.ts +108 -108
  34. package/dist/bubbles/service-bubble/github.d.ts +76 -76
  35. package/dist/bubbles/service-bubble/gmail.d.ts +80 -80
  36. package/dist/bubbles/service-bubble/google-calendar.d.ts +138 -138
  37. package/dist/bubbles/service-bubble/google-drive.d.ts +60 -60
  38. package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +44 -44
  39. package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts +48 -48
  40. package/dist/bubbles/service-bubble/hello-world.d.ts +8 -8
  41. package/dist/bubbles/service-bubble/http.d.ts +16 -16
  42. package/dist/bubbles/service-bubble/insforge-db.d.ts +8 -8
  43. package/dist/bubbles/service-bubble/jira/jira.d.ts +86 -86
  44. package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +94 -94
  45. package/dist/bubbles/service-bubble/notion/notion.d.ts +522 -522
  46. package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +8 -8
  47. package/dist/bubbles/service-bubble/postgresql.d.ts +8 -8
  48. package/dist/bubbles/service-bubble/posthog/posthog.d.ts +20 -20
  49. package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +24 -24
  50. package/dist/bubbles/service-bubble/resend.d.ts +28 -28
  51. package/dist/bubbles/service-bubble/sendsafely/index.d.ts +4 -0
  52. package/dist/bubbles/service-bubble/sendsafely/index.d.ts.map +1 -0
  53. package/dist/bubbles/service-bubble/sendsafely/index.js +4 -0
  54. package/dist/bubbles/service-bubble/sendsafely/index.js.map +1 -0
  55. package/dist/bubbles/service-bubble/sendsafely/sendsafely.d.ts +247 -0
  56. package/dist/bubbles/service-bubble/sendsafely/sendsafely.d.ts.map +1 -0
  57. package/dist/bubbles/service-bubble/sendsafely/sendsafely.js +212 -0
  58. package/dist/bubbles/service-bubble/sendsafely/sendsafely.js.map +1 -0
  59. package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.d.ts +270 -0
  60. package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.d.ts.map +1 -0
  61. package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.js +144 -0
  62. package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.js.map +1 -0
  63. package/dist/bubbles/service-bubble/sendsafely/sendsafely.utils.d.ts +78 -0
  64. package/dist/bubbles/service-bubble/sendsafely/sendsafely.utils.d.ts.map +1 -0
  65. package/dist/bubbles/service-bubble/sendsafely/sendsafely.utils.js +171 -0
  66. package/dist/bubbles/service-bubble/sendsafely/sendsafely.utils.js.map +1 -0
  67. package/dist/bubbles/service-bubble/slack/slack.d.ts +252 -252
  68. package/dist/bubbles/service-bubble/storage.d.ts +20 -20
  69. package/dist/bubbles/service-bubble/stripe/stripe.d.ts +125 -125
  70. package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +143 -143
  71. package/dist/bubbles/service-bubble/telegram.d.ts +1537 -1537
  72. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +13 -13
  73. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +13 -13
  74. package/dist/bubbles/tool-bubble/browser-tools/_shared/schema.d.ts +2 -2
  75. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/schema.d.ts +2 -2
  76. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.d.ts +2 -2
  77. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/schema.d.ts +2 -2
  78. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.d.ts +2 -2
  79. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/schema.d.ts +2 -2
  80. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.d.ts +2 -2
  81. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/schema.d.ts +2 -2
  82. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.d.ts +2 -2
  83. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +16 -16
  84. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +26 -26
  85. package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +8 -8
  86. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +22 -22
  87. package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +4 -4
  88. package/dist/bubbles/tool-bubble/get-trigger-detail-tool.d.ts +4 -4
  89. package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +4 -4
  90. package/dist/bubbles/tool-bubble/instagram-tool.d.ts +14 -14
  91. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +186 -186
  92. package/dist/bubbles/tool-bubble/list-airtable-bases-tool.d.ts +4 -4
  93. package/dist/bubbles/tool-bubble/list-airtable-tables-tool.d.ts +4 -4
  94. package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
  95. package/dist/bubbles/tool-bubble/list-capabilities-tool.d.ts +4 -4
  96. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +14 -14
  97. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +28 -28
  98. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +8 -8
  99. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
  100. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +28 -28
  101. package/dist/bubbles/tool-bubble/tool-template.d.ts +4 -4
  102. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +54 -54
  103. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +22 -22
  104. package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +8 -8
  105. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +8 -8
  106. package/dist/bubbles/tool-bubble/web-search-tool.d.ts +8 -8
  107. package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +22 -22
  108. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +18 -18
  109. package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts +4 -4
  110. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +28 -28
  111. package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +8 -8
  112. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +72 -72
  113. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +32 -32
  114. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +34 -34
  115. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +90 -90
  116. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +8 -8
  117. package/dist/bubbles.json +316 -2
  118. package/dist/index.d.ts +1 -0
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +1 -0
  121. package/dist/index.js.map +1 -1
  122. package/package.json +3 -2
  123. package/dist/bubble-trigger/index.d.ts +0 -2
  124. package/dist/bubble-trigger/index.d.ts.map +0 -1
  125. package/dist/bubble-trigger/index.js +0 -2
  126. package/dist/bubble-trigger/index.js.map +0 -1
  127. package/dist/bubble-trigger/types.d.ts +0 -87
  128. package/dist/bubble-trigger/types.d.ts.map +0 -1
  129. package/dist/bubble-trigger/types.js +0 -14
  130. package/dist/bubble-trigger/types.js.map +0 -1
  131. package/dist/bubbles/service-bubble/google-sheets.d.ts +0 -1811
  132. package/dist/bubbles/service-bubble/google-sheets.d.ts.map +0 -1
  133. package/dist/bubbles/service-bubble/google-sheets.js +0 -904
  134. package/dist/bubbles/service-bubble/google-sheets.js.map +0 -1
  135. package/dist/bubbles/service-bubble/slack.d.ts +0 -5869
  136. package/dist/bubbles/service-bubble/slack.d.ts.map +0 -1
  137. package/dist/bubbles/service-bubble/slack.js +0 -1536
  138. package/dist/bubbles/service-bubble/slack.js.map +0 -1
  139. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts +0 -3
  140. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts.map +0 -1
  141. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js +0 -3
  142. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js.map +0 -1
  143. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts +0 -160
  144. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts.map +0 -1
  145. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js +0 -706
  146. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js.map +0 -1
  147. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts +0 -93
  148. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts.map +0 -1
  149. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js +0 -50
  150. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js.map +0 -1
  151. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +0 -114
  152. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +0 -1
  153. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +0 -777
  154. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +0 -1
  155. package/dist/types/ai-models.d.ts +0 -4
  156. package/dist/types/ai-models.d.ts.map +0 -1
  157. package/dist/types/ai-models.js +0 -16
  158. package/dist/types/ai-models.js.map +0 -1
  159. package/dist/utils/param-helper.d.ts +0 -2
  160. package/dist/utils/param-helper.d.ts.map +0 -1
  161. package/dist/utils/param-helper.js +0 -5
  162. package/dist/utils/param-helper.js.map +0 -1
@@ -47,6 +47,11 @@ declare const ResendParamsSchema: z.ZodDiscriminatedUnion<"operation", [z.ZodObj
47
47
  to: string | string[];
48
48
  subject: string;
49
49
  credentials?: Partial<Record<CredentialType, string>> | undefined;
50
+ tags?: {
51
+ value: string;
52
+ name: string;
53
+ }[] | undefined;
54
+ headers?: Record<string, string> | undefined;
50
55
  text?: string | undefined;
51
56
  attachments?: {
52
57
  filename: string;
@@ -59,16 +64,16 @@ declare const ResendParamsSchema: z.ZodDiscriminatedUnion<"operation", [z.ZodObj
59
64
  html?: string | undefined;
60
65
  reply_to?: string | string[] | undefined;
61
66
  scheduled_at?: string | undefined;
62
- tags?: {
63
- value: string;
64
- name: string;
65
- }[] | undefined;
66
- headers?: Record<string, string> | undefined;
67
67
  }, {
68
68
  operation: "send_email";
69
69
  to: string | string[];
70
70
  subject: string;
71
71
  credentials?: Partial<Record<CredentialType, string>> | undefined;
72
+ tags?: {
73
+ value: string;
74
+ name: string;
75
+ }[] | undefined;
76
+ headers?: Record<string, string> | undefined;
72
77
  text?: string | undefined;
73
78
  attachments?: {
74
79
  filename: string;
@@ -82,11 +87,6 @@ declare const ResendParamsSchema: z.ZodDiscriminatedUnion<"operation", [z.ZodObj
82
87
  html?: string | undefined;
83
88
  reply_to?: string | string[] | undefined;
84
89
  scheduled_at?: string | undefined;
85
- tags?: {
86
- value: string;
87
- name: string;
88
- }[] | undefined;
89
- headers?: Record<string, string> | undefined;
90
90
  }>, z.ZodObject<{
91
91
  operation: z.ZodLiteral<"get_email_status">;
92
92
  email_id: z.ZodString;
@@ -106,13 +106,13 @@ declare const ResendResultSchema: z.ZodDiscriminatedUnion<"operation", [z.ZodObj
106
106
  email_id: z.ZodOptional<z.ZodString>;
107
107
  error: z.ZodString;
108
108
  }, "strip", z.ZodTypeAny, {
109
- success: boolean;
110
109
  error: string;
110
+ success: boolean;
111
111
  operation: "send_email";
112
112
  email_id?: string | undefined;
113
113
  }, {
114
- success: boolean;
115
114
  error: string;
115
+ success: boolean;
116
116
  operation: "send_email";
117
117
  email_id?: string | undefined;
118
118
  }>, z.ZodObject<{
@@ -123,15 +123,15 @@ declare const ResendResultSchema: z.ZodDiscriminatedUnion<"operation", [z.ZodObj
123
123
  last_event: z.ZodOptional<z.ZodString>;
124
124
  error: z.ZodString;
125
125
  }, "strip", z.ZodTypeAny, {
126
- success: boolean;
127
126
  error: string;
127
+ success: boolean;
128
128
  operation: "get_email_status";
129
129
  status?: string | undefined;
130
130
  created_at?: string | undefined;
131
131
  last_event?: string | undefined;
132
132
  }, {
133
- success: boolean;
134
133
  error: string;
134
+ success: boolean;
135
135
  operation: "get_email_status";
136
136
  status?: string | undefined;
137
137
  created_at?: string | undefined;
@@ -194,6 +194,11 @@ export declare class ResendBubble<T extends ResendParams = ResendParams> extends
194
194
  to: string | string[];
195
195
  subject: string;
196
196
  credentials?: Partial<Record<CredentialType, string>> | undefined;
197
+ tags?: {
198
+ value: string;
199
+ name: string;
200
+ }[] | undefined;
201
+ headers?: Record<string, string> | undefined;
197
202
  text?: string | undefined;
198
203
  attachments?: {
199
204
  filename: string;
@@ -206,16 +211,16 @@ export declare class ResendBubble<T extends ResendParams = ResendParams> extends
206
211
  html?: string | undefined;
207
212
  reply_to?: string | string[] | undefined;
208
213
  scheduled_at?: string | undefined;
209
- tags?: {
210
- value: string;
211
- name: string;
212
- }[] | undefined;
213
- headers?: Record<string, string> | undefined;
214
214
  }, {
215
215
  operation: "send_email";
216
216
  to: string | string[];
217
217
  subject: string;
218
218
  credentials?: Partial<Record<CredentialType, string>> | undefined;
219
+ tags?: {
220
+ value: string;
221
+ name: string;
222
+ }[] | undefined;
223
+ headers?: Record<string, string> | undefined;
219
224
  text?: string | undefined;
220
225
  attachments?: {
221
226
  filename: string;
@@ -229,11 +234,6 @@ export declare class ResendBubble<T extends ResendParams = ResendParams> extends
229
234
  html?: string | undefined;
230
235
  reply_to?: string | string[] | undefined;
231
236
  scheduled_at?: string | undefined;
232
- tags?: {
233
- value: string;
234
- name: string;
235
- }[] | undefined;
236
- headers?: Record<string, string> | undefined;
237
237
  }>, z.ZodObject<{
238
238
  operation: z.ZodLiteral<"get_email_status">;
239
239
  email_id: z.ZodString;
@@ -253,13 +253,13 @@ export declare class ResendBubble<T extends ResendParams = ResendParams> extends
253
253
  email_id: z.ZodOptional<z.ZodString>;
254
254
  error: z.ZodString;
255
255
  }, "strip", z.ZodTypeAny, {
256
- success: boolean;
257
256
  error: string;
257
+ success: boolean;
258
258
  operation: "send_email";
259
259
  email_id?: string | undefined;
260
260
  }, {
261
- success: boolean;
262
261
  error: string;
262
+ success: boolean;
263
263
  operation: "send_email";
264
264
  email_id?: string | undefined;
265
265
  }>, z.ZodObject<{
@@ -270,15 +270,15 @@ export declare class ResendBubble<T extends ResendParams = ResendParams> extends
270
270
  last_event: z.ZodOptional<z.ZodString>;
271
271
  error: z.ZodString;
272
272
  }, "strip", z.ZodTypeAny, {
273
- success: boolean;
274
273
  error: string;
274
+ success: boolean;
275
275
  operation: "get_email_status";
276
276
  status?: string | undefined;
277
277
  created_at?: string | undefined;
278
278
  last_event?: string | undefined;
279
279
  }, {
280
- success: boolean;
281
280
  error: string;
281
+ success: boolean;
282
282
  operation: "get_email_status";
283
283
  status?: string | undefined;
284
284
  created_at?: string | undefined;
@@ -0,0 +1,4 @@
1
+ export { SendSafelyBubble } from './sendsafely.js';
2
+ export { SendSafelyParamsSchema, SendSafelyResultSchema, type SendSafelyParams, type SendSafelyParamsInput, type SendSafelyResult, } from './sendsafely.schema.js';
3
+ export { parseSendSafelyCredential, createClient, type SendSafelyCredentials, } from './sendsafely.utils.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/sendsafely/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,yBAAyB,EACzB,YAAY,EACZ,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { SendSafelyBubble } from './sendsafely.js';
2
+ export { SendSafelyParamsSchema, SendSafelyResultSchema, } from './sendsafely.schema.js';
3
+ export { parseSendSafelyCredential, createClient, } from './sendsafely.utils.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/sendsafely/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GAIvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,yBAAyB,EACzB,YAAY,GAEb,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,247 @@
1
+ import { ServiceBubble } from '../../../types/service-bubble-class.js';
2
+ import type { BubbleContext } from '../../../types/bubble.js';
3
+ import { CredentialType } from '@bubblelab/shared-schemas';
4
+ import { type SendSafelyParamsInput, type SendSafelyResult } from './sendsafely.schema.js';
5
+ /**
6
+ * SendSafely Service Bubble
7
+ *
8
+ * Encrypted file transfer and secure messaging via SendSafely.
9
+ * Uses the official @sendsafely/sendsafely SDK (v3).
10
+ *
11
+ * Features:
12
+ * - Send encrypted files to recipients via secure links
13
+ * - Send encrypted messages via secure links
14
+ * - Retrieve package information
15
+ *
16
+ * Use cases:
17
+ * - Share sensitive documents securely with external parties
18
+ * - Send encrypted messages through automated workflows
19
+ * - Integrate encrypted file transfer into BubbleFlow pipelines
20
+ *
21
+ * Security Features:
22
+ * - End-to-end encryption via SendSafely SDK
23
+ * - Multi-field credential storage (host + apiKey + apiSecret)
24
+ * - Input validation with Zod schemas
25
+ */
26
+ export declare class SendSafelyBubble<T extends SendSafelyParamsInput = SendSafelyParamsInput> extends ServiceBubble<T, Extract<SendSafelyResult, {
27
+ operation: T['operation'];
28
+ }>> {
29
+ static readonly type: "service";
30
+ static readonly service = "sendsafely";
31
+ static readonly authType: "apikey";
32
+ static readonly bubbleName = "sendsafely";
33
+ static readonly schema: import("zod").ZodDiscriminatedUnion<"operation", [import("zod").ZodObject<{
34
+ operation: import("zod").ZodLiteral<"send_file">;
35
+ recipientEmail: import("zod").ZodString;
36
+ fileName: import("zod").ZodString;
37
+ fileData: import("zod").ZodString;
38
+ message: import("zod").ZodOptional<import("zod").ZodString>;
39
+ lifeDays: import("zod").ZodOptional<import("zod").ZodNumber>;
40
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
41
+ }, "strip", import("zod").ZodTypeAny, {
42
+ operation: "send_file";
43
+ fileName: string;
44
+ recipientEmail: string;
45
+ fileData: string;
46
+ message?: string | undefined;
47
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
48
+ lifeDays?: number | undefined;
49
+ }, {
50
+ operation: "send_file";
51
+ fileName: string;
52
+ recipientEmail: string;
53
+ fileData: string;
54
+ message?: string | undefined;
55
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
56
+ lifeDays?: number | undefined;
57
+ }>, import("zod").ZodObject<{
58
+ operation: import("zod").ZodLiteral<"send_message">;
59
+ recipientEmail: import("zod").ZodString;
60
+ message: import("zod").ZodString;
61
+ lifeDays: import("zod").ZodOptional<import("zod").ZodNumber>;
62
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
63
+ }, "strip", import("zod").ZodTypeAny, {
64
+ message: string;
65
+ operation: "send_message";
66
+ recipientEmail: string;
67
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
68
+ lifeDays?: number | undefined;
69
+ }, {
70
+ message: string;
71
+ operation: "send_message";
72
+ recipientEmail: string;
73
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
74
+ lifeDays?: number | undefined;
75
+ }>, import("zod").ZodObject<{
76
+ operation: import("zod").ZodLiteral<"get_package">;
77
+ package_id: import("zod").ZodString;
78
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
79
+ }, "strip", import("zod").ZodTypeAny, {
80
+ operation: "get_package";
81
+ package_id: string;
82
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
83
+ }, {
84
+ operation: "get_package";
85
+ package_id: string;
86
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
87
+ }>]>;
88
+ static readonly resultSchema: import("zod").ZodDiscriminatedUnion<"operation", [import("zod").ZodObject<{
89
+ operation: import("zod").ZodLiteral<"send_file">;
90
+ success: import("zod").ZodBoolean;
91
+ packageId: import("zod").ZodOptional<import("zod").ZodString>;
92
+ secureLink: import("zod").ZodOptional<import("zod").ZodString>;
93
+ error: import("zod").ZodString;
94
+ }, "strip", import("zod").ZodTypeAny, {
95
+ error: string;
96
+ success: boolean;
97
+ operation: "send_file";
98
+ packageId?: string | undefined;
99
+ secureLink?: string | undefined;
100
+ }, {
101
+ error: string;
102
+ success: boolean;
103
+ operation: "send_file";
104
+ packageId?: string | undefined;
105
+ secureLink?: string | undefined;
106
+ }>, import("zod").ZodObject<{
107
+ operation: import("zod").ZodLiteral<"send_message">;
108
+ success: import("zod").ZodBoolean;
109
+ packageId: import("zod").ZodOptional<import("zod").ZodString>;
110
+ secureLink: import("zod").ZodOptional<import("zod").ZodString>;
111
+ error: import("zod").ZodString;
112
+ }, "strip", import("zod").ZodTypeAny, {
113
+ error: string;
114
+ success: boolean;
115
+ operation: "send_message";
116
+ packageId?: string | undefined;
117
+ secureLink?: string | undefined;
118
+ }, {
119
+ error: string;
120
+ success: boolean;
121
+ operation: "send_message";
122
+ packageId?: string | undefined;
123
+ secureLink?: string | undefined;
124
+ }>, import("zod").ZodObject<{
125
+ operation: import("zod").ZodLiteral<"get_package">;
126
+ success: import("zod").ZodBoolean;
127
+ package: import("zod").ZodOptional<import("zod").ZodObject<{
128
+ packageId: import("zod").ZodString;
129
+ packageCode: import("zod").ZodOptional<import("zod").ZodString>;
130
+ serverSecret: import("zod").ZodOptional<import("zod").ZodString>;
131
+ recipients: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
132
+ recipientId: import("zod").ZodString;
133
+ email: import("zod").ZodString;
134
+ }, "strip", import("zod").ZodTypeAny, {
135
+ email: string;
136
+ recipientId: string;
137
+ }, {
138
+ email: string;
139
+ recipientId: string;
140
+ }>, "many">>;
141
+ files: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
142
+ fileId: import("zod").ZodString;
143
+ fileName: import("zod").ZodString;
144
+ fileSize: import("zod").ZodOptional<import("zod").ZodNumber>;
145
+ }, "strip", import("zod").ZodTypeAny, {
146
+ fileName: string;
147
+ fileId: string;
148
+ fileSize?: number | undefined;
149
+ }, {
150
+ fileName: string;
151
+ fileId: string;
152
+ fileSize?: number | undefined;
153
+ }>, "many">>;
154
+ state: import("zod").ZodOptional<import("zod").ZodString>;
155
+ life: import("zod").ZodOptional<import("zod").ZodNumber>;
156
+ secureLink: import("zod").ZodOptional<import("zod").ZodString>;
157
+ }, "strip", import("zod").ZodTypeAny, {
158
+ packageId: string;
159
+ files?: {
160
+ fileName: string;
161
+ fileId: string;
162
+ fileSize?: number | undefined;
163
+ }[] | undefined;
164
+ state?: string | undefined;
165
+ packageCode?: string | undefined;
166
+ serverSecret?: string | undefined;
167
+ recipients?: {
168
+ email: string;
169
+ recipientId: string;
170
+ }[] | undefined;
171
+ life?: number | undefined;
172
+ secureLink?: string | undefined;
173
+ }, {
174
+ packageId: string;
175
+ files?: {
176
+ fileName: string;
177
+ fileId: string;
178
+ fileSize?: number | undefined;
179
+ }[] | undefined;
180
+ state?: string | undefined;
181
+ packageCode?: string | undefined;
182
+ serverSecret?: string | undefined;
183
+ recipients?: {
184
+ email: string;
185
+ recipientId: string;
186
+ }[] | undefined;
187
+ life?: number | undefined;
188
+ secureLink?: string | undefined;
189
+ }>>;
190
+ error: import("zod").ZodString;
191
+ }, "strip", import("zod").ZodTypeAny, {
192
+ error: string;
193
+ success: boolean;
194
+ operation: "get_package";
195
+ package?: {
196
+ packageId: string;
197
+ files?: {
198
+ fileName: string;
199
+ fileId: string;
200
+ fileSize?: number | undefined;
201
+ }[] | undefined;
202
+ state?: string | undefined;
203
+ packageCode?: string | undefined;
204
+ serverSecret?: string | undefined;
205
+ recipients?: {
206
+ email: string;
207
+ recipientId: string;
208
+ }[] | undefined;
209
+ life?: number | undefined;
210
+ secureLink?: string | undefined;
211
+ } | undefined;
212
+ }, {
213
+ error: string;
214
+ success: boolean;
215
+ operation: "get_package";
216
+ package?: {
217
+ packageId: string;
218
+ files?: {
219
+ fileName: string;
220
+ fileId: string;
221
+ fileSize?: number | undefined;
222
+ }[] | undefined;
223
+ state?: string | undefined;
224
+ packageCode?: string | undefined;
225
+ serverSecret?: string | undefined;
226
+ recipients?: {
227
+ email: string;
228
+ recipientId: string;
229
+ }[] | undefined;
230
+ life?: number | undefined;
231
+ secureLink?: string | undefined;
232
+ } | undefined;
233
+ }>]>;
234
+ static readonly shortDescription = "Encrypted file transfer and secure messaging via SendSafely";
235
+ static readonly longDescription = "\n SendSafely integration for encrypted file transfer and secure messaging.\n Uses the official SendSafely SDK with end-to-end encryption.\n\n Features:\n - Send encrypted files to recipients via secure links\n - Send encrypted messages via secure links\n - Retrieve package information\n\n Use cases:\n - Share sensitive documents securely with external parties\n - Send encrypted messages through automated workflows\n - Integrate encrypted file transfer into BubbleFlow pipelines\n\n Security Features:\n - End-to-end encryption via SendSafely SDK\n - Multi-field credential (host + API key + API secret)\n - Input validation with Zod schemas\n ";
236
+ static readonly alias = "encrypted-transfer";
237
+ constructor(params?: T, context?: BubbleContext);
238
+ testCredential(): Promise<boolean>;
239
+ protected performAction(context?: BubbleContext): Promise<Extract<SendSafelyResult, {
240
+ operation: T['operation'];
241
+ }>>;
242
+ private sendFile;
243
+ private sendMessage;
244
+ private getPackage;
245
+ protected chooseCredential(): string | undefined;
246
+ }
247
+ //# sourceMappingURL=sendsafely.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendsafely.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/sendsafely/sendsafely.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAehC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,gBAAgB,CAC3B,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,CACvD,SAAQ,aAAa,CACrB,CAAC,EACD,OAAO,CAAC,gBAAgB,EAAE;IAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,CACzD;IACC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,gBAAgB;IACvC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAC7C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAA0B;IAChD,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAA0B;IACtD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,iEACgC;IAChE,MAAM,CAAC,QAAQ,CAAC,eAAe,yrBAkB7B;IACF,MAAM,CAAC,QAAQ,CAAC,KAAK,wBAAwB;gBAG3C,MAAM,GAAE,CAGF,EACN,OAAO,CAAC,EAAE,aAAa;IAKZ,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;cAgB/B,aAAa,CAC3B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;KAAE,CAAC,CAAC;YAkDtD,QAAQ;YAqER,WAAW;YAwDX,UAAU;IAwCxB,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;CAWjD"}
@@ -0,0 +1,212 @@
1
+ import { ServiceBubble } from '../../../types/service-bubble-class.js';
2
+ import { CredentialType } from '@bubblelab/shared-schemas';
3
+ import { SendSafelyParamsSchema, SendSafelyResultSchema, } from './sendsafely.schema.js';
4
+ import { parseSendSafelyCredential, createClient, verifyCredentials, createPackage, addRecipient, encryptAndUploadFile, encryptMessage, saveMessage, finalizePackage, updatePackage, getPackageInfo, } from './sendsafely.utils.js';
5
+ /**
6
+ * SendSafely Service Bubble
7
+ *
8
+ * Encrypted file transfer and secure messaging via SendSafely.
9
+ * Uses the official @sendsafely/sendsafely SDK (v3).
10
+ *
11
+ * Features:
12
+ * - Send encrypted files to recipients via secure links
13
+ * - Send encrypted messages via secure links
14
+ * - Retrieve package information
15
+ *
16
+ * Use cases:
17
+ * - Share sensitive documents securely with external parties
18
+ * - Send encrypted messages through automated workflows
19
+ * - Integrate encrypted file transfer into BubbleFlow pipelines
20
+ *
21
+ * Security Features:
22
+ * - End-to-end encryption via SendSafely SDK
23
+ * - Multi-field credential storage (host + apiKey + apiSecret)
24
+ * - Input validation with Zod schemas
25
+ */
26
+ export class SendSafelyBubble extends ServiceBubble {
27
+ static type = 'service';
28
+ static service = 'sendsafely';
29
+ static authType = 'apikey';
30
+ static bubbleName = 'sendsafely';
31
+ static schema = SendSafelyParamsSchema;
32
+ static resultSchema = SendSafelyResultSchema;
33
+ static shortDescription = 'Encrypted file transfer and secure messaging via SendSafely';
34
+ static longDescription = `
35
+ SendSafely integration for encrypted file transfer and secure messaging.
36
+ Uses the official SendSafely SDK with end-to-end encryption.
37
+
38
+ Features:
39
+ - Send encrypted files to recipients via secure links
40
+ - Send encrypted messages via secure links
41
+ - Retrieve package information
42
+
43
+ Use cases:
44
+ - Share sensitive documents securely with external parties
45
+ - Send encrypted messages through automated workflows
46
+ - Integrate encrypted file transfer into BubbleFlow pipelines
47
+
48
+ Security Features:
49
+ - End-to-end encryption via SendSafely SDK
50
+ - Multi-field credential (host + API key + API secret)
51
+ - Input validation with Zod schemas
52
+ `;
53
+ static alias = 'encrypted-transfer';
54
+ constructor(params = {
55
+ operation: 'get_package',
56
+ package_id: '',
57
+ }, context) {
58
+ super(params, context);
59
+ }
60
+ async testCredential() {
61
+ const credential = this.chooseCredential();
62
+ if (!credential) {
63
+ return false;
64
+ }
65
+ try {
66
+ const creds = parseSendSafelyCredential(credential);
67
+ const client = createClient(creds);
68
+ await verifyCredentials(client);
69
+ return true;
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ }
75
+ async performAction(context) {
76
+ void context;
77
+ const { operation } = this.params;
78
+ try {
79
+ const result = await (async () => {
80
+ const parsedParams = this.params;
81
+ switch (operation) {
82
+ case 'send_file':
83
+ return await this.sendFile(parsedParams);
84
+ case 'send_message':
85
+ return await this.sendMessage(parsedParams);
86
+ case 'get_package':
87
+ return await this.getPackage(parsedParams);
88
+ default:
89
+ throw new Error(`Unsupported operation: ${operation}`);
90
+ }
91
+ })();
92
+ return result;
93
+ }
94
+ catch (error) {
95
+ return {
96
+ operation,
97
+ success: false,
98
+ error: error instanceof Error ? error.message : 'Unknown error occurred',
99
+ };
100
+ }
101
+ }
102
+ // ============================================================================
103
+ // SEND FILE
104
+ // ============================================================================
105
+ async sendFile(params) {
106
+ const credential = this.chooseCredential();
107
+ if (!credential) {
108
+ throw new Error('SendSafely credentials are required');
109
+ }
110
+ const creds = parseSendSafelyCredential(credential);
111
+ const client = createClient(creds);
112
+ // 1. Verify credentials
113
+ await verifyCredentials(client);
114
+ // 2. Create a package
115
+ const pkg = await createPackage(client);
116
+ // 3. Set expiration if specified
117
+ if (params.lifeDays !== undefined) {
118
+ await updatePackage(client, pkg.packageId, { life: params.lifeDays });
119
+ }
120
+ // 4. Add recipient
121
+ await addRecipient(client, pkg.packageId, params.recipientEmail);
122
+ // 5. Encrypt and upload file
123
+ const fileBuffer = Buffer.from(params.fileData, 'base64');
124
+ await encryptAndUploadFile(client, pkg.packageId, pkg.keyCode, pkg.serverSecret, params.fileName, fileBuffer);
125
+ // 6. Optionally add a message
126
+ if (params.message) {
127
+ const encrypted = await encryptMessage(client, pkg.packageId, pkg.keyCode, pkg.serverSecret, params.message);
128
+ await saveMessage(client, pkg.packageId, encrypted);
129
+ }
130
+ // 7. Finalize (encrypts keycodes for recipients and triggers notification)
131
+ const secureLink = await finalizePackage(client, pkg.packageId, pkg.packageCode, pkg.keyCode);
132
+ return {
133
+ operation: 'send_file',
134
+ success: true,
135
+ packageId: pkg.packageId,
136
+ secureLink,
137
+ error: '',
138
+ };
139
+ }
140
+ // ============================================================================
141
+ // SEND MESSAGE
142
+ // ============================================================================
143
+ async sendMessage(params) {
144
+ const credential = this.chooseCredential();
145
+ if (!credential) {
146
+ throw new Error('SendSafely credentials are required');
147
+ }
148
+ const creds = parseSendSafelyCredential(credential);
149
+ const client = createClient(creds);
150
+ // 1. Verify credentials
151
+ await verifyCredentials(client);
152
+ // 2. Create a package
153
+ const pkg = await createPackage(client);
154
+ // 3. Set expiration if specified
155
+ if (params.lifeDays !== undefined) {
156
+ await updatePackage(client, pkg.packageId, { life: params.lifeDays });
157
+ }
158
+ // 4. Add recipient
159
+ await addRecipient(client, pkg.packageId, params.recipientEmail);
160
+ // 5. Encrypt message and save to server
161
+ const encrypted = await encryptMessage(client, pkg.packageId, pkg.keyCode, pkg.serverSecret, params.message);
162
+ await saveMessage(client, pkg.packageId, encrypted);
163
+ // 6. Finalize (encrypts keycodes for recipients and triggers notification)
164
+ const secureLink = await finalizePackage(client, pkg.packageId, pkg.packageCode, pkg.keyCode);
165
+ return {
166
+ operation: 'send_message',
167
+ success: true,
168
+ packageId: pkg.packageId,
169
+ secureLink,
170
+ error: '',
171
+ };
172
+ }
173
+ // ============================================================================
174
+ // GET PACKAGE
175
+ // ============================================================================
176
+ async getPackage(params) {
177
+ const credential = this.chooseCredential();
178
+ if (!credential) {
179
+ throw new Error('SendSafely credentials are required');
180
+ }
181
+ const creds = parseSendSafelyCredential(credential);
182
+ const client = createClient(creds);
183
+ await verifyCredentials(client);
184
+ const info = await getPackageInfo(client, params.package_id);
185
+ return {
186
+ operation: 'get_package',
187
+ success: true,
188
+ package: {
189
+ packageId: info.packageId || params.package_id,
190
+ packageCode: info.packageCode,
191
+ serverSecret: info.serverSecret,
192
+ recipients: info.recipients,
193
+ files: info.files,
194
+ state: info.state,
195
+ life: info.life,
196
+ secureLink: info.secureLink,
197
+ },
198
+ error: '',
199
+ };
200
+ }
201
+ // ============================================================================
202
+ // CREDENTIAL MANAGEMENT
203
+ // ============================================================================
204
+ chooseCredential() {
205
+ const { credentials } = this.params;
206
+ if (!credentials || typeof credentials !== 'object') {
207
+ return undefined;
208
+ }
209
+ return credentials[CredentialType.SENDSAFELY_CRED];
210
+ }
211
+ }
212
+ //# sourceMappingURL=sendsafely.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendsafely.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/sendsafely/sendsafely.ts"],"names":[],"mappings":"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"}