@skillful-ai/piece-skai-adapters 0.1.16 → 0.1.17
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.js +12 -0
- package/src/lib/actions/gmail-to-skai.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
|
@@ -31,6 +31,7 @@ exports.gmailToSkai = (0, pieces_framework_1.createAction)({
|
|
|
31
31
|
},
|
|
32
32
|
run(context) {
|
|
33
33
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
var _a;
|
|
34
35
|
const { gmailMessage, agent, webhookUrl, chatBufferWindowSeconds } = context.propsValue;
|
|
35
36
|
try {
|
|
36
37
|
// Validate chat buffer window seconds
|
|
@@ -41,6 +42,17 @@ exports.gmailToSkai = (0, pieces_framework_1.createAction)({
|
|
|
41
42
|
// Transform Gmail message to GenericMessage format
|
|
42
43
|
const transformer = new gmail_transformer_1.GmailTransformer();
|
|
43
44
|
const genericMessage = transformer.transform(gmailMessage);
|
|
45
|
+
// Echo suppression: skip messages sent FROM the connected inbox (SKAI's own replies)
|
|
46
|
+
const fromAddress = (((_a = genericMessage.metadata) === null || _a === void 0 ? void 0 : _a.from_address) || '').toLowerCase();
|
|
47
|
+
const inboxAddress = (genericMessage.unique_handle || '').toLowerCase();
|
|
48
|
+
if (fromAddress && inboxAddress && fromAddress === inboxAddress) {
|
|
49
|
+
return {
|
|
50
|
+
success: true,
|
|
51
|
+
skipped: true,
|
|
52
|
+
reason: 'outbound_echo',
|
|
53
|
+
originalPlatform: 'gmail',
|
|
54
|
+
};
|
|
55
|
+
}
|
|
44
56
|
// Prepare request body
|
|
45
57
|
const requestBody = {
|
|
46
58
|
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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"}
|
|
@@ -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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"}
|