@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.
- package/dist/bubble-bundle.d.ts +150 -128
- package/dist/bubble-factory.d.ts.map +1 -1
- package/dist/bubble-factory.js +4 -0
- package/dist/bubble-factory.js.map +1 -1
- package/dist/bubble-flow/bubble-flow-class.js.map +1 -1
- package/dist/bubbles/service-bubble/agi-inc.d.ts +144 -144
- package/dist/bubbles/service-bubble/ai-agent.d.ts +8 -8
- package/dist/bubbles/service-bubble/airtable.d.ts +184 -184
- package/dist/bubbles/service-bubble/apify/apify.d.ts +24 -24
- package/dist/bubbles/service-bubble/ashby/ashby.d.ts +152 -152
- package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +55 -55
- package/dist/bubbles/service-bubble/confluence/confluence.d.ts +63 -63
- package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +98 -98
- package/dist/bubbles/service-bubble/eleven-labs.d.ts +56 -56
- package/dist/bubbles/service-bubble/firecrawl.d.ts +264 -264
- package/dist/bubbles/service-bubble/followupboss.d.ts +282 -282
- package/dist/bubbles/service-bubble/fullenrich/fullenrich.d.ts +40 -40
- package/dist/bubbles/service-bubble/github.d.ts +216 -216
- package/dist/bubbles/service-bubble/gmail.d.ts +228 -228
- package/dist/bubbles/service-bubble/google-calendar.d.ts +62 -62
- package/dist/bubbles/service-bubble/google-drive.d.ts +152 -152
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +44 -44
- package/dist/bubbles/service-bubble/hello-world.d.ts +4 -4
- package/dist/bubbles/service-bubble/http.d.ts +12 -12
- package/dist/bubbles/service-bubble/insforge-db.d.ts +6 -6
- package/dist/bubbles/service-bubble/jira/jira.d.ts +107 -107
- package/dist/bubbles/service-bubble/notion/notion.d.ts +932 -932
- package/dist/bubbles/service-bubble/postgresql.d.ts +6 -6
- package/dist/bubbles/service-bubble/posthog/posthog.d.ts +73 -73
- package/dist/bubbles/service-bubble/posthog/posthog.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/posthog/posthog.js.map +1 -1
- package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +93 -93
- package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/posthog/posthog.schema.js +16 -23
- package/dist/bubbles/service-bubble/posthog/posthog.schema.js.map +1 -1
- package/dist/bubbles/service-bubble/resend.d.ts +16 -16
- package/dist/bubbles/service-bubble/sendsafely/index.d.ts +4 -0
- package/dist/bubbles/service-bubble/sendsafely/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/sendsafely/index.js +4 -0
- package/dist/bubbles/service-bubble/sendsafely/index.js.map +1 -0
- package/dist/bubbles/service-bubble/sendsafely/sendsafely.d.ts +247 -0
- package/dist/bubbles/service-bubble/sendsafely/sendsafely.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/sendsafely/sendsafely.js +212 -0
- package/dist/bubbles/service-bubble/sendsafely/sendsafely.js.map +1 -0
- package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.d.ts +270 -0
- package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.js +144 -0
- package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/sendsafely/sendsafely.utils.d.ts +78 -0
- package/dist/bubbles/service-bubble/sendsafely/sendsafely.utils.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/sendsafely/sendsafely.utils.js +171 -0
- package/dist/bubbles/service-bubble/sendsafely/sendsafely.utils.js.map +1 -0
- package/dist/bubbles/service-bubble/slack/slack.d.ts +324 -324
- package/dist/bubbles/service-bubble/storage.d.ts +40 -40
- package/dist/bubbles/service-bubble/stripe/stripe.d.ts +161 -161
- package/dist/bubbles/service-bubble/telegram.d.ts +264 -264
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +26 -26
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +18 -18
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/get-trigger-detail-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +12 -12
- package/dist/bubbles/tool-bubble/instagram-tool.d.ts +22 -22
- package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +108 -108
- package/dist/bubbles/tool-bubble/list-airtable-bases-tool.d.ts +12 -12
- package/dist/bubbles/tool-bubble/list-airtable-tables-tool.d.ts +24 -24
- package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/list-capabilities-tool.d.ts +12 -12
- package/dist/bubbles/tool-bubble/people-search-tool.d.ts +42 -42
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +16 -16
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +12 -12
- package/dist/bubbles/tool-bubble/tool-template.d.ts +4 -4
- package/dist/bubbles/tool-bubble/twitter-tool.d.ts +36 -36
- package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/web-search-tool.d.ts +16 -16
- package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/youtube-tool.d.ts +18 -18
- package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts +4 -4
- 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 +68 -68
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +24 -24
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +10 -10
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +62 -62
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +4 -4
- package/dist/bubbles.json +316 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/dist/bubble-trigger/index.d.ts +0 -2
- package/dist/bubble-trigger/index.d.ts.map +0 -1
- package/dist/bubble-trigger/index.js +0 -2
- package/dist/bubble-trigger/index.js.map +0 -1
- package/dist/bubble-trigger/types.d.ts +0 -87
- package/dist/bubble-trigger/types.d.ts.map +0 -1
- package/dist/bubble-trigger/types.js +0 -14
- package/dist/bubble-trigger/types.js.map +0 -1
- package/dist/bubbles/service-bubble/google-sheets.d.ts +0 -1811
- package/dist/bubbles/service-bubble/google-sheets.d.ts.map +0 -1
- package/dist/bubbles/service-bubble/google-sheets.js +0 -904
- package/dist/bubbles/service-bubble/google-sheets.js.map +0 -1
- package/dist/bubbles/service-bubble/slack.d.ts +0 -5869
- package/dist/bubbles/service-bubble/slack.d.ts.map +0 -1
- package/dist/bubbles/service-bubble/slack.js +0 -1536
- package/dist/bubbles/service-bubble/slack.js.map +0 -1
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts +0 -3
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts.map +0 -1
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js +0 -3
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js.map +0 -1
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts +0 -160
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts.map +0 -1
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js +0 -706
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js.map +0 -1
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts +0 -93
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts.map +0 -1
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js +0 -50
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js.map +0 -1
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +0 -114
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +0 -1
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +0 -777
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +0 -1
- package/dist/types/ai-models.d.ts +0 -4
- package/dist/types/ai-models.d.ts.map +0 -1
- package/dist/types/ai-models.js +0 -16
- package/dist/types/ai-models.js.map +0 -1
- package/dist/utils/param-helper.d.ts +0 -2
- package/dist/utils/param-helper.d.ts.map +0 -1
- package/dist/utils/param-helper.js +0 -5
- package/dist/utils/param-helper.js.map +0 -1
|
@@ -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 @@
|
|
|
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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"}
|