@bubblelab/bubble-core 0.1.158 → 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 (141) hide show
  1. package/dist/bubble-bundle.d.ts +150 -128
  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 +144 -144
  7. package/dist/bubbles/service-bubble/ai-agent.d.ts +8 -8
  8. package/dist/bubbles/service-bubble/airtable.d.ts +184 -184
  9. package/dist/bubbles/service-bubble/apify/apify.d.ts +24 -24
  10. package/dist/bubbles/service-bubble/ashby/ashby.d.ts +152 -152
  11. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +55 -55
  12. package/dist/bubbles/service-bubble/confluence/confluence.d.ts +63 -63
  13. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +98 -98
  14. package/dist/bubbles/service-bubble/eleven-labs.d.ts +56 -56
  15. package/dist/bubbles/service-bubble/firecrawl.d.ts +264 -264
  16. package/dist/bubbles/service-bubble/followupboss.d.ts +282 -282
  17. package/dist/bubbles/service-bubble/fullenrich/fullenrich.d.ts +40 -40
  18. package/dist/bubbles/service-bubble/github.d.ts +216 -216
  19. package/dist/bubbles/service-bubble/gmail.d.ts +228 -228
  20. package/dist/bubbles/service-bubble/google-calendar.d.ts +62 -62
  21. package/dist/bubbles/service-bubble/google-drive.d.ts +152 -152
  22. package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +44 -44
  23. package/dist/bubbles/service-bubble/hello-world.d.ts +4 -4
  24. package/dist/bubbles/service-bubble/http.d.ts +12 -12
  25. package/dist/bubbles/service-bubble/insforge-db.d.ts +6 -6
  26. package/dist/bubbles/service-bubble/jira/jira.d.ts +107 -107
  27. package/dist/bubbles/service-bubble/notion/notion.d.ts +932 -932
  28. package/dist/bubbles/service-bubble/postgresql.d.ts +6 -6
  29. package/dist/bubbles/service-bubble/posthog/posthog.d.ts +73 -73
  30. package/dist/bubbles/service-bubble/posthog/posthog.d.ts.map +1 -1
  31. package/dist/bubbles/service-bubble/posthog/posthog.js.map +1 -1
  32. package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +93 -93
  33. package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts.map +1 -1
  34. package/dist/bubbles/service-bubble/posthog/posthog.schema.js +16 -23
  35. package/dist/bubbles/service-bubble/posthog/posthog.schema.js.map +1 -1
  36. package/dist/bubbles/service-bubble/resend.d.ts +16 -16
  37. package/dist/bubbles/service-bubble/sendsafely/index.d.ts +4 -0
  38. package/dist/bubbles/service-bubble/sendsafely/index.d.ts.map +1 -0
  39. package/dist/bubbles/service-bubble/sendsafely/index.js +4 -0
  40. package/dist/bubbles/service-bubble/sendsafely/index.js.map +1 -0
  41. package/dist/bubbles/service-bubble/sendsafely/sendsafely.d.ts +247 -0
  42. package/dist/bubbles/service-bubble/sendsafely/sendsafely.d.ts.map +1 -0
  43. package/dist/bubbles/service-bubble/sendsafely/sendsafely.js +212 -0
  44. package/dist/bubbles/service-bubble/sendsafely/sendsafely.js.map +1 -0
  45. package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.d.ts +270 -0
  46. package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.d.ts.map +1 -0
  47. package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.js +144 -0
  48. package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.js.map +1 -0
  49. package/dist/bubbles/service-bubble/sendsafely/sendsafely.utils.d.ts +78 -0
  50. package/dist/bubbles/service-bubble/sendsafely/sendsafely.utils.d.ts.map +1 -0
  51. package/dist/bubbles/service-bubble/sendsafely/sendsafely.utils.js +171 -0
  52. package/dist/bubbles/service-bubble/sendsafely/sendsafely.utils.js.map +1 -0
  53. package/dist/bubbles/service-bubble/slack/slack.d.ts +324 -324
  54. package/dist/bubbles/service-bubble/storage.d.ts +40 -40
  55. package/dist/bubbles/service-bubble/stripe/stripe.d.ts +161 -161
  56. package/dist/bubbles/service-bubble/telegram.d.ts +264 -264
  57. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +26 -26
  58. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.d.ts +4 -4
  59. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.d.ts +4 -4
  60. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.d.ts +4 -4
  61. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.d.ts +4 -4
  62. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +8 -8
  63. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +4 -4
  64. package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +4 -4
  65. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +18 -18
  66. package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +4 -4
  67. package/dist/bubbles/tool-bubble/get-trigger-detail-tool.d.ts +4 -4
  68. package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +12 -12
  69. package/dist/bubbles/tool-bubble/instagram-tool.d.ts +22 -22
  70. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +108 -108
  71. package/dist/bubbles/tool-bubble/list-airtable-bases-tool.d.ts +12 -12
  72. package/dist/bubbles/tool-bubble/list-airtable-tables-tool.d.ts +24 -24
  73. package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
  74. package/dist/bubbles/tool-bubble/list-capabilities-tool.d.ts +12 -12
  75. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +42 -42
  76. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +16 -16
  77. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +8 -8
  78. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +8 -8
  79. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +12 -12
  80. package/dist/bubbles/tool-bubble/tool-template.d.ts +4 -4
  81. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +36 -36
  82. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +8 -8
  83. package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +8 -8
  84. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +8 -8
  85. package/dist/bubbles/tool-bubble/web-search-tool.d.ts +16 -16
  86. package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +8 -8
  87. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +18 -18
  88. package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts +4 -4
  89. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +24 -24
  90. package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +4 -4
  91. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +68 -68
  92. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +24 -24
  93. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +10 -10
  94. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +62 -62
  95. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +4 -4
  96. package/dist/bubbles.json +316 -2
  97. package/dist/index.d.ts +1 -0
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +1 -0
  100. package/dist/index.js.map +1 -1
  101. package/package.json +3 -2
  102. package/dist/bubble-trigger/index.d.ts +0 -2
  103. package/dist/bubble-trigger/index.d.ts.map +0 -1
  104. package/dist/bubble-trigger/index.js +0 -2
  105. package/dist/bubble-trigger/index.js.map +0 -1
  106. package/dist/bubble-trigger/types.d.ts +0 -87
  107. package/dist/bubble-trigger/types.d.ts.map +0 -1
  108. package/dist/bubble-trigger/types.js +0 -14
  109. package/dist/bubble-trigger/types.js.map +0 -1
  110. package/dist/bubbles/service-bubble/google-sheets.d.ts +0 -1811
  111. package/dist/bubbles/service-bubble/google-sheets.d.ts.map +0 -1
  112. package/dist/bubbles/service-bubble/google-sheets.js +0 -904
  113. package/dist/bubbles/service-bubble/google-sheets.js.map +0 -1
  114. package/dist/bubbles/service-bubble/slack.d.ts +0 -5869
  115. package/dist/bubbles/service-bubble/slack.d.ts.map +0 -1
  116. package/dist/bubbles/service-bubble/slack.js +0 -1536
  117. package/dist/bubbles/service-bubble/slack.js.map +0 -1
  118. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts +0 -3
  119. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts.map +0 -1
  120. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js +0 -3
  121. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js.map +0 -1
  122. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts +0 -160
  123. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts.map +0 -1
  124. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js +0 -706
  125. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js.map +0 -1
  126. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts +0 -93
  127. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts.map +0 -1
  128. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js +0 -50
  129. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js.map +0 -1
  130. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +0 -114
  131. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +0 -1
  132. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +0 -777
  133. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +0 -1
  134. package/dist/types/ai-models.d.ts +0 -4
  135. package/dist/types/ai-models.d.ts.map +0 -1
  136. package/dist/types/ai-models.js +0 -16
  137. package/dist/types/ai-models.js.map +0 -1
  138. package/dist/utils/param-helper.d.ts +0 -2
  139. package/dist/utils/param-helper.d.ts.map +0 -1
  140. package/dist/utils/param-helper.js +0 -5
  141. package/dist/utils/param-helper.js.map +0 -1
@@ -106,14 +106,14 @@ 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
- operation: "send_email";
110
- success: boolean;
111
109
  error: string;
110
+ success: boolean;
111
+ operation: "send_email";
112
112
  email_id?: string | undefined;
113
113
  }, {
114
- operation: "send_email";
115
- success: boolean;
116
114
  error: string;
115
+ success: boolean;
116
+ operation: "send_email";
117
117
  email_id?: string | undefined;
118
118
  }>, z.ZodObject<{
119
119
  operation: z.ZodLiteral<"get_email_status">;
@@ -123,16 +123,16 @@ 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
- operation: "get_email_status";
127
- success: boolean;
128
126
  error: string;
127
+ success: boolean;
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
- operation: "get_email_status";
134
- success: boolean;
135
133
  error: string;
134
+ success: boolean;
135
+ operation: "get_email_status";
136
136
  status?: string | undefined;
137
137
  created_at?: string | undefined;
138
138
  last_event?: string | undefined;
@@ -253,14 +253,14 @@ 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
- operation: "send_email";
257
- success: boolean;
258
256
  error: string;
257
+ success: boolean;
258
+ operation: "send_email";
259
259
  email_id?: string | undefined;
260
260
  }, {
261
- operation: "send_email";
262
- success: boolean;
263
261
  error: string;
262
+ success: boolean;
263
+ operation: "send_email";
264
264
  email_id?: string | undefined;
265
265
  }>, z.ZodObject<{
266
266
  operation: z.ZodLiteral<"get_email_status">;
@@ -270,16 +270,16 @@ 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
- operation: "get_email_status";
274
- success: boolean;
275
273
  error: string;
274
+ success: boolean;
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
- operation: "get_email_status";
281
- success: boolean;
282
280
  error: string;
281
+ success: boolean;
282
+ operation: "get_email_status";
283
283
  status?: string | undefined;
284
284
  created_at?: string | undefined;
285
285
  last_event?: 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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"}