@skillful-ai/piece-skai-adapters 0.1.16 → 0.1.18
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/package.json +1 -1
- package/src/lib/actions/gmail-to-skai.d.ts +1 -0
- package/src/lib/actions/gmail-to-skai.js +18 -1
- package/src/lib/actions/gmail-to-skai.js.map +1 -1
- package/src/lib/actions/skai-to-gmail.js +14 -16
- package/src/lib/actions/skai-to-gmail.js.map +1 -1
- package/src/lib/transformers/gmail.transformer.d.ts +8 -4
- package/src/lib/transformers/gmail.transformer.js +15 -7
- package/src/lib/transformers/gmail.transformer.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const gmailToSkai: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").PieceAuthProperty, {
|
|
2
2
|
gmailMessage: import("@activepieces/pieces-framework").JsonProperty<true>;
|
|
3
|
+
connectedEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
3
4
|
agent: import("@activepieces/pieces-framework").DropdownProperty<string, false, undefined>;
|
|
4
5
|
webhookUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
5
6
|
chatBufferWindowSeconds: import("@activepieces/pieces-framework").NumberProperty<false>;
|
|
@@ -16,6 +16,11 @@ exports.gmailToSkai = (0, pieces_framework_1.createAction)({
|
|
|
16
16
|
description: 'Output from Gmail New Email trigger',
|
|
17
17
|
required: true,
|
|
18
18
|
}),
|
|
19
|
+
connectedEmail: pieces_framework_1.Property.ShortText({
|
|
20
|
+
displayName: 'Connected Inbox Email',
|
|
21
|
+
description: 'Email address of the connected Gmail inbox (used to suppress echo from SKAI\'s own sent replies)',
|
|
22
|
+
required: true,
|
|
23
|
+
}),
|
|
19
24
|
agent: dropdowns_1.agentDropdown,
|
|
20
25
|
webhookUrl: pieces_framework_1.Property.ShortText({
|
|
21
26
|
displayName: 'Webhook Callback URL',
|
|
@@ -31,7 +36,8 @@ exports.gmailToSkai = (0, pieces_framework_1.createAction)({
|
|
|
31
36
|
},
|
|
32
37
|
run(context) {
|
|
33
38
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
34
|
-
|
|
39
|
+
var _a;
|
|
40
|
+
const { gmailMessage, connectedEmail, agent, webhookUrl, chatBufferWindowSeconds } = context.propsValue;
|
|
35
41
|
try {
|
|
36
42
|
// Validate chat buffer window seconds
|
|
37
43
|
const bufferSeconds = chatBufferWindowSeconds !== null && chatBufferWindowSeconds !== void 0 ? chatBufferWindowSeconds : 0;
|
|
@@ -41,6 +47,17 @@ exports.gmailToSkai = (0, pieces_framework_1.createAction)({
|
|
|
41
47
|
// Transform Gmail message to GenericMessage format
|
|
42
48
|
const transformer = new gmail_transformer_1.GmailTransformer();
|
|
43
49
|
const genericMessage = transformer.transform(gmailMessage);
|
|
50
|
+
// Echo suppression: skip messages sent FROM the connected inbox
|
|
51
|
+
const fromAddress = (((_a = genericMessage.metadata) === null || _a === void 0 ? void 0 : _a.from_address) || '').toLowerCase();
|
|
52
|
+
const inboxAddress = (connectedEmail || '').toLowerCase().trim();
|
|
53
|
+
if (fromAddress && inboxAddress && fromAddress === inboxAddress) {
|
|
54
|
+
return {
|
|
55
|
+
success: true,
|
|
56
|
+
skipped: true,
|
|
57
|
+
reason: 'outbound_echo',
|
|
58
|
+
originalPlatform: 'gmail',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
44
61
|
// Prepare request body
|
|
45
62
|
const requestBody = {
|
|
46
63
|
external_id: genericMessage.external_id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gmail-to-skai.js","sourceRoot":"","sources":["../../../../src/lib/actions/gmail-to-skai.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,yEAAqE;AACrE,uDAAmD;AACnD,mDAAoD;AAEvC,QAAA,WAAW,GAAG,IAAA,+BAAY,EAAC;IACvC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,oBAAoB;IACjC,WAAW,EAAE,uEAAuE;IAEpF,KAAK,EAAE;QACN,YAAY,EAAE,2BAAQ,CAAC,IAAI,CAAC;YAC3B,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,qCAAqC;YAClD,QAAQ,EAAE,IAAI;SACd,CAAC;QACF,KAAK,EAAE,yBAAa;QACpB,UAAU,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC9B,WAAW,EAAE,sBAAsB;YACnC,WAAW,EACV,8EAA8E;YAC/E,QAAQ,EAAE,IAAI;SACd,CAAC;QACF,uBAAuB,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACxC,WAAW,EAAE,8BAA8B;YAC3C,WAAW,EAAE,+DAA+D;YAC5E,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,CAAC;SACf,CAAC;KACF;IAEK,GAAG,CAAC,OAAO
|
|
1
|
+
{"version":3,"file":"gmail-to-skai.js","sourceRoot":"","sources":["../../../../src/lib/actions/gmail-to-skai.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ exports.skaiToGmail = (0, pieces_framework_1.createAction)({
|
|
|
21
21
|
},
|
|
22
22
|
run(context) {
|
|
23
23
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
var _a;
|
|
24
|
+
var _a, _b, _c;
|
|
25
25
|
const { webhookPayload, threadData } = context.propsValue;
|
|
26
26
|
try {
|
|
27
27
|
// Parse webhook payload
|
|
@@ -37,28 +37,26 @@ exports.skaiToGmail = (0, pieces_framework_1.createAction)({
|
|
|
37
37
|
if (!payload.external_id || (!hasMessages && !hasMedia)) {
|
|
38
38
|
throw new Error('Missing required fields: external_id and (messages or media_urls)');
|
|
39
39
|
}
|
|
40
|
-
// Extract sender and subject from thread data
|
|
40
|
+
// Extract sender and subject from thread data
|
|
41
41
|
const thread = threadData;
|
|
42
42
|
const threadMessages = (thread === null || thread === void 0 ? void 0 : thread.messages) || [];
|
|
43
|
-
// Find the last message
|
|
44
|
-
//
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
: null;
|
|
43
|
+
// Find the last INBOUND message (no SENT label) — that's the customer's message we're replying to.
|
|
44
|
+
// Messages with labelIds containing 'SENT' are outbound (sent by the inbox owner).
|
|
45
|
+
const lastInboundMessage = (_b = (_a = [...threadMessages]
|
|
46
|
+
.reverse()
|
|
47
|
+
.find((msg) => !Array.isArray(msg.labelIds) || !msg.labelIds.includes('SENT'))) !== null && _a !== void 0 ? _a : threadMessages[0]) !== null && _b !== void 0 ? _b : null;
|
|
48
48
|
let fromAddress = '';
|
|
49
49
|
let subject = '';
|
|
50
50
|
let messageIdHeader = '';
|
|
51
|
-
if ((
|
|
52
|
-
const headers =
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
subject = (subjectHeader === null || subjectHeader === void 0 ? void 0 : subjectHeader.value) || '';
|
|
58
|
-
messageIdHeader = (messageIdH === null || messageIdH === void 0 ? void 0 : messageIdH.value) || '';
|
|
51
|
+
if ((_c = lastInboundMessage === null || lastInboundMessage === void 0 ? void 0 : lastInboundMessage.payload) === null || _c === void 0 ? void 0 : _c.headers) {
|
|
52
|
+
const headers = lastInboundMessage.payload.headers;
|
|
53
|
+
const getHeader = (name) => { var _a; return ((_a = headers.find((h) => h.name.toLowerCase() === name.toLowerCase())) === null || _a === void 0 ? void 0 : _a.value) || ''; };
|
|
54
|
+
fromAddress = getHeader('from');
|
|
55
|
+
subject = getHeader('subject');
|
|
56
|
+
messageIdHeader = getHeader('message-id');
|
|
59
57
|
}
|
|
60
58
|
if (!fromAddress) {
|
|
61
|
-
throw new Error('Could not resolve reply-to address from thread data');
|
|
59
|
+
throw new Error('Could not resolve reply-to address from thread data: no inbound message found');
|
|
62
60
|
}
|
|
63
61
|
const chatMessageIds = payload.chat_message_ids || [];
|
|
64
62
|
// Combine all messages into a single email body
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skai-to-gmail.js","sourceRoot":"","sources":["../../../../src/lib/actions/skai-to-gmail.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AAE3D,QAAA,WAAW,GAAG,IAAA,+BAAY,EAAC;IACvC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,2LAA2L;IAExM,KAAK,EAAE;QACN,cAAc,EAAE,2BAAQ,CAAC,IAAI,CAAC;YAC7B,WAAW,EAAE,sBAAsB;YACnC,WAAW,EAAE,2CAA2C;YACxD,QAAQ,EAAE,IAAI;SACd,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,IAAI,CAAC;YACzB,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE,kFAAkF;YAC/F,QAAQ,EAAE,IAAI;SACd,CAAC;KACF;IAEK,GAAG,CAAC,OAAO;;;YAChB,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAE1D,IAAI,CAAC;gBACJ,wBAAwB;gBACxB,MAAM,OAAO,GAAG,cAAqB,CAAC;gBAEtC,oBAAoB;gBACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACvD,MAAM,IAAI,KAAK,CACd,4CAA4C,OAAO,CAAC,QAAQ,IAAI,WAAW,GAAG,CAC9E,CAAC;gBACH,CAAC;gBAED,2BAA2B;gBAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChF,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxG,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;gBAErE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzD,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBACtF,CAAC;gBAED,
|
|
1
|
+
{"version":3,"file":"skai-to-gmail.js","sourceRoot":"","sources":["../../../../src/lib/actions/skai-to-gmail.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,10 @@ import { GenericMessage } from '../common/types/generic-message';
|
|
|
2
2
|
/**
|
|
3
3
|
* Gmail trigger output format (from google-mail piece new_email trigger)
|
|
4
4
|
* The trigger returns { message: ParsedMail, thread: ThreadResponse }
|
|
5
|
+
*
|
|
6
|
+
* After convertAttachment() in the trigger, attachments have:
|
|
7
|
+
* { fileName, mimeType, size, data: ApFile }
|
|
8
|
+
* where data is an ActivePieces file reference (served as a URL between steps)
|
|
5
9
|
*/
|
|
6
10
|
export interface GmailTriggerOutput {
|
|
7
11
|
message: {
|
|
@@ -39,10 +43,10 @@ export interface GmailTriggerOutput {
|
|
|
39
43
|
html?: string | false;
|
|
40
44
|
date?: string;
|
|
41
45
|
attachments?: Array<{
|
|
42
|
-
|
|
43
|
-
|
|
46
|
+
fileName?: string;
|
|
47
|
+
mimeType?: string;
|
|
44
48
|
size?: number;
|
|
45
|
-
|
|
49
|
+
data?: any;
|
|
46
50
|
}>;
|
|
47
51
|
headers?: Map<string, string> | Record<string, string>;
|
|
48
52
|
};
|
|
@@ -64,5 +68,5 @@ export interface GmailTriggerOutput {
|
|
|
64
68
|
export declare class GmailTransformer {
|
|
65
69
|
transform(gmailOutput: GmailTriggerOutput): GenericMessage;
|
|
66
70
|
private _stripHtml;
|
|
67
|
-
private
|
|
71
|
+
private _mapMimeType;
|
|
68
72
|
}
|
|
@@ -42,14 +42,22 @@ class GmailTransformer {
|
|
|
42
42
|
},
|
|
43
43
|
},
|
|
44
44
|
};
|
|
45
|
-
// Process attachments
|
|
45
|
+
// Process attachments — AP file references from convertAttachment()
|
|
46
46
|
if (message.attachments && message.attachments.length > 0) {
|
|
47
47
|
const mediaUrls = [];
|
|
48
48
|
const mediaTypes = [];
|
|
49
49
|
for (const attachment of message.attachments) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
// The data field is an ApFile reference (serialized as URL string between steps)
|
|
51
|
+
// Also check for url field as fallback
|
|
52
|
+
const fileRef = attachment.data || attachment.url;
|
|
53
|
+
if (fileRef) {
|
|
54
|
+
// If it's an ApFile object, extract the URL; if it's already a string, use directly
|
|
55
|
+
const url = typeof fileRef === 'string' ? fileRef
|
|
56
|
+
: (fileRef.url || fileRef.base64 ? `data:${attachment.mimeType || 'application/octet-stream'};base64,${fileRef.base64}` : null);
|
|
57
|
+
if (url) {
|
|
58
|
+
mediaUrls.push(url);
|
|
59
|
+
mediaTypes.push(this._mapMimeType(attachment.mimeType));
|
|
60
|
+
}
|
|
53
61
|
}
|
|
54
62
|
}
|
|
55
63
|
if (mediaUrls.length > 0) {
|
|
@@ -77,10 +85,10 @@ class GmailTransformer {
|
|
|
77
85
|
.replace(/\n{3,}/g, '\n\n')
|
|
78
86
|
.trim();
|
|
79
87
|
}
|
|
80
|
-
|
|
81
|
-
if (!
|
|
88
|
+
_mapMimeType(mimeType) {
|
|
89
|
+
if (!mimeType)
|
|
82
90
|
return generic_message_1.MediaType.DOCUMENT;
|
|
83
|
-
const lower =
|
|
91
|
+
const lower = mimeType.toLowerCase();
|
|
84
92
|
if (lower.startsWith('image/'))
|
|
85
93
|
return generic_message_1.MediaType.IMAGE;
|
|
86
94
|
if (lower.startsWith('video/'))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gmail.transformer.js","sourceRoot":"","sources":["../../../../src/lib/transformers/gmail.transformer.ts"],"names":[],"mappings":";;;AAAA,qEAAsF;
|
|
1
|
+
{"version":3,"file":"gmail.transformer.js","sourceRoot":"","sources":["../../../../src/lib/transformers/gmail.transformer.ts"],"names":[],"mappings":"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"}
|