@skillful-ai/piece-skai-adapters 0.1.14 → 0.1.16
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 +17 -17
- package/src/index.js +4 -0
- package/src/index.js.map +1 -1
- package/src/lib/actions/gmail-to-skai.d.ts +6 -0
- package/src/lib/actions/gmail-to-skai.js +86 -0
- package/src/lib/actions/gmail-to-skai.js.map +1 -0
- package/src/lib/actions/skai-to-gmail.d.ts +4 -0
- package/src/lib/actions/skai-to-gmail.js +105 -0
- package/src/lib/actions/skai-to-gmail.js.map +1 -0
- package/src/lib/auth/skai.auth.js +15 -15
- package/src/lib/common/types/generic-message.d.ts +2 -1
- package/src/lib/common/types/generic-message.js +1 -0
- package/src/lib/common/types/generic-message.js.map +1 -1
- package/src/lib/transformers/gmail.transformer.d.ts +68 -0
- package/src/lib/transformers/gmail.transformer.js +94 -0
- package/src/lib/transformers/gmail.transformer.js.map +1 -0
- package/src/lib/triggers/skai-response-webhook.js +4 -4
- package/skillful-ai-piece-skai-adapters-0.1.11.tgz +0 -0
- package/skillful-ai-piece-skai-adapters-0.1.12.tgz +0 -0
- package/skillful-ai-piece-skai-adapters-0.1.13.tgz +0 -0
- package/skillful-ai-piece-skai-adapters-0.1.14.tgz +0 -0
- package/skillful-ai-piece-skai-adapters-0.1.6.tgz +0 -0
- package/skillful-ai-piece-skai-adapters-0.1.7.tgz +0 -0
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@skillful-ai/piece-skai-adapters",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"type": "commonjs",
|
|
5
|
-
"main": "./dist/src/index.js",
|
|
6
|
-
"types": "./dist/src/index.d.ts",
|
|
7
|
-
"dependencies": {
|
|
8
|
-
"tslib": "^2.3.0",
|
|
9
|
-
"@activepieces/pieces-framework": "0.25.6",
|
|
10
|
-
"@activepieces/pieces-common": "0.11.7",
|
|
11
|
-
"@activepieces/shared": "0.41.1",
|
|
12
|
-
"@skillful-ai/skai-sdk": "^1.0.9"
|
|
13
|
-
},
|
|
14
|
-
"scripts": {
|
|
15
|
-
"build": "tsc -p tsconfig.lib.json ; cp package.json dist/"
|
|
16
|
-
}
|
|
17
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@skillful-ai/piece-skai-adapters",
|
|
3
|
+
"version": "0.1.16",
|
|
4
|
+
"type": "commonjs",
|
|
5
|
+
"main": "./dist/src/index.js",
|
|
6
|
+
"types": "./dist/src/index.d.ts",
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"tslib": "^2.3.0",
|
|
9
|
+
"@activepieces/pieces-framework": "0.25.6",
|
|
10
|
+
"@activepieces/pieces-common": "0.11.7",
|
|
11
|
+
"@activepieces/shared": "0.41.1",
|
|
12
|
+
"@skillful-ai/skai-sdk": "^1.0.9"
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc -p tsconfig.lib.json ; cp package.json dist/"
|
|
16
|
+
}
|
|
17
|
+
}
|
package/src/index.js
CHANGED
|
@@ -13,6 +13,8 @@ const whapi_to_skai_1 = require("./lib/actions/whapi-to-skai");
|
|
|
13
13
|
const instagram_to_skai_1 = require("./lib/actions/instagram-to-skai");
|
|
14
14
|
const onlyfans_to_skai_1 = require("./lib/actions/onlyfans-to-skai");
|
|
15
15
|
const skai_to_onlyfans_1 = require("./lib/actions/skai-to-onlyfans");
|
|
16
|
+
const gmail_to_skai_1 = require("./lib/actions/gmail-to-skai");
|
|
17
|
+
const skai_to_gmail_1 = require("./lib/actions/skai-to-gmail");
|
|
16
18
|
const update_chat_message_reference_1 = require("./lib/actions/update-chat-message-reference");
|
|
17
19
|
const skai_response_webhook_1 = require("./lib/triggers/skai-response-webhook");
|
|
18
20
|
// Social media adapters - Inbound (Platform -> SKAI Contract)
|
|
@@ -50,6 +52,8 @@ exports.skaiAdapters = (0, pieces_framework_1.createPiece)({
|
|
|
50
52
|
instagram_to_skai_1.instagramToSkai,
|
|
51
53
|
onlyfans_to_skai_1.onlyfansToSkai,
|
|
52
54
|
skai_to_onlyfans_1.skaiToOnlyfans,
|
|
55
|
+
gmail_to_skai_1.gmailToSkai,
|
|
56
|
+
skai_to_gmail_1.skaiToGmail,
|
|
53
57
|
update_chat_message_reference_1.updateChatMessageReference,
|
|
54
58
|
// Social media adapters
|
|
55
59
|
normalize_posts_1.normalizePosts,
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AAExE,kDAAkD;AAClD,qEAAgE;AAChE,qEAAgE;AAChE,+DAA0D;AAC1D,uEAAkE;AAClE,qEAAgE;AAChE,qEAAgE;AAChE,+DAA0D;AAC1D,uEAAkE;AAClE,qEAAgE;AAChE,qEAAgE;AAChE,+FAAyF;AACzF,gFAA2E;AAE3E,8DAA8D;AAC9D,mEAA+D;AAC/D,yEAAqE;AACrE,yEAAqE;AAErE,+DAA+D;AAC/D,+DAA2D;AAE3D,uEAAuE;AACvE,uEAAmE;AACnE,mFAA8E;AAE9E,mBAAmB;AACnB,uEAAkE;AAElE,gDAAgD;AAChD,qEAAiE;AACjE,yDAAqD;AAErD,sBAAsB;AACtB,6EAAwE;AAE3D,QAAA,YAAY,GAAG,IAAA,8BAAW,EAAC;IACpC,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,iJAAiJ;IAC9J,IAAI,EAAE,4BAAS,CAAC,IAAI,EAAE;IACtB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,oFAAoF;IAC7F,OAAO,EAAE,CAAC,aAAa,CAAC;IACxB,OAAO,EAAE;QACL,qBAAqB;QACrB,iCAAc;QACd,iCAAc;QACd,2BAAW;QACX,mCAAe;QACf,iCAAc;QACd,iCAAc;QACd,2BAAW;QACX,mCAAe;QACf,iCAAc;QACd,iCAAc;QACd,0DAA0B;QAC1B,wBAAwB;QACxB,gCAAc;QACd,sCAAiB;QACjB,sCAAiB;QACjB,4BAAY;QACZ,oCAAgB;QAChB,+CAAqB;QACrB,kCAAe;QACf,sBAAS;QACT,mBAAmB;QACnB,mCAAe;QACf,sBAAsB;QACtB,yCAAkB;KACrB;IACD,QAAQ,EAAE,CAAC,2CAAmB,CAAC;CAClC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AAExE,kDAAkD;AAClD,qEAAgE;AAChE,qEAAgE;AAChE,+DAA0D;AAC1D,uEAAkE;AAClE,qEAAgE;AAChE,qEAAgE;AAChE,+DAA0D;AAC1D,uEAAkE;AAClE,qEAAgE;AAChE,qEAAgE;AAChE,+DAA0D;AAC1D,+DAA0D;AAC1D,+FAAyF;AACzF,gFAA2E;AAE3E,8DAA8D;AAC9D,mEAA+D;AAC/D,yEAAqE;AACrE,yEAAqE;AAErE,+DAA+D;AAC/D,+DAA2D;AAE3D,uEAAuE;AACvE,uEAAmE;AACnE,mFAA8E;AAE9E,mBAAmB;AACnB,uEAAkE;AAElE,gDAAgD;AAChD,qEAAiE;AACjE,yDAAqD;AAErD,sBAAsB;AACtB,6EAAwE;AAE3D,QAAA,YAAY,GAAG,IAAA,8BAAW,EAAC;IACpC,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,iJAAiJ;IAC9J,IAAI,EAAE,4BAAS,CAAC,IAAI,EAAE;IACtB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,oFAAoF;IAC7F,OAAO,EAAE,CAAC,aAAa,CAAC;IACxB,OAAO,EAAE;QACL,qBAAqB;QACrB,iCAAc;QACd,iCAAc;QACd,2BAAW;QACX,mCAAe;QACf,iCAAc;QACd,iCAAc;QACd,2BAAW;QACX,mCAAe;QACf,iCAAc;QACd,iCAAc;QACd,2BAAW;QACX,2BAAW;QACX,0DAA0B;QAC1B,wBAAwB;QACxB,gCAAc;QACd,sCAAiB;QACjB,sCAAiB;QACjB,4BAAY;QACZ,oCAAgB;QAChB,+CAAqB;QACrB,kCAAe;QACf,sBAAS;QACT,mBAAmB;QACnB,mCAAe;QACf,sBAAsB;QACtB,yCAAkB;KACrB;IACD,QAAQ,EAAE,CAAC,2CAAmB,CAAC;CAClC,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const gmailToSkai: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").PieceAuthProperty, {
|
|
2
|
+
gmailMessage: import("@activepieces/pieces-framework").JsonProperty<true>;
|
|
3
|
+
agent: import("@activepieces/pieces-framework").DropdownProperty<string, false, undefined>;
|
|
4
|
+
webhookUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
5
|
+
chatBufferWindowSeconds: import("@activepieces/pieces-framework").NumberProperty<false>;
|
|
6
|
+
}>;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gmailToSkai = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const gmail_transformer_1 = require("../transformers/gmail.transformer");
|
|
7
|
+
const skai_client_1 = require("../common/skai-client");
|
|
8
|
+
const dropdowns_1 = require("../common/dropdowns");
|
|
9
|
+
exports.gmailToSkai = (0, pieces_framework_1.createAction)({
|
|
10
|
+
name: 'gmail_to_skai',
|
|
11
|
+
displayName: 'Gmail → SKAI Agent',
|
|
12
|
+
description: 'Transform Gmail message to generic format and process with SKAI agent',
|
|
13
|
+
props: {
|
|
14
|
+
gmailMessage: pieces_framework_1.Property.Json({
|
|
15
|
+
displayName: 'Gmail Message',
|
|
16
|
+
description: 'Output from Gmail New Email trigger',
|
|
17
|
+
required: true,
|
|
18
|
+
}),
|
|
19
|
+
agent: dropdowns_1.agentDropdown,
|
|
20
|
+
webhookUrl: pieces_framework_1.Property.ShortText({
|
|
21
|
+
displayName: 'Webhook Callback URL',
|
|
22
|
+
description: 'URL from SKAI Response Webhook trigger (Flow 2) for backend to send response',
|
|
23
|
+
required: true,
|
|
24
|
+
}),
|
|
25
|
+
chatBufferWindowSeconds: pieces_framework_1.Property.Number({
|
|
26
|
+
displayName: 'Chat Buffer Window (Seconds)',
|
|
27
|
+
description: 'Chat buffer window in seconds (0 to 60 seconds, 1 minute max)',
|
|
28
|
+
required: false,
|
|
29
|
+
defaultValue: 0,
|
|
30
|
+
}),
|
|
31
|
+
},
|
|
32
|
+
run(context) {
|
|
33
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
const { gmailMessage, agent, webhookUrl, chatBufferWindowSeconds } = context.propsValue;
|
|
35
|
+
try {
|
|
36
|
+
// Validate chat buffer window seconds
|
|
37
|
+
const bufferSeconds = chatBufferWindowSeconds !== null && chatBufferWindowSeconds !== void 0 ? chatBufferWindowSeconds : 0;
|
|
38
|
+
if (bufferSeconds < 0 || bufferSeconds > 60) {
|
|
39
|
+
throw new Error('Chat buffer window seconds must be between 0 and 60 (1 minute)');
|
|
40
|
+
}
|
|
41
|
+
// Transform Gmail message to GenericMessage format
|
|
42
|
+
const transformer = new gmail_transformer_1.GmailTransformer();
|
|
43
|
+
const genericMessage = transformer.transform(gmailMessage);
|
|
44
|
+
// Prepare request body
|
|
45
|
+
const requestBody = {
|
|
46
|
+
external_id: genericMessage.external_id,
|
|
47
|
+
reference_id: genericMessage.reference_id,
|
|
48
|
+
platform: genericMessage.platform,
|
|
49
|
+
message: genericMessage.message,
|
|
50
|
+
sender_name: genericMessage.sender_name,
|
|
51
|
+
unique_handle: genericMessage.unique_handle,
|
|
52
|
+
media_urls: genericMessage.media_urls || [],
|
|
53
|
+
media_types: genericMessage.media_types || [],
|
|
54
|
+
metadata: genericMessage.metadata || {},
|
|
55
|
+
webhook_url: webhookUrl,
|
|
56
|
+
chat_buffer_window_seconds: Math.round(bufferSeconds),
|
|
57
|
+
};
|
|
58
|
+
// Call SKAI Agents API using server context
|
|
59
|
+
const skaiResponse = yield skai_client_1.skaiClient.processMessage({
|
|
60
|
+
serverUrl: context.server.publicUrl,
|
|
61
|
+
token: context.server.token,
|
|
62
|
+
agentId: typeof agent === 'string' ? agent : null,
|
|
63
|
+
payload: requestBody,
|
|
64
|
+
});
|
|
65
|
+
// Build response
|
|
66
|
+
const response = {
|
|
67
|
+
success: true,
|
|
68
|
+
skaiResponse,
|
|
69
|
+
genericMessage,
|
|
70
|
+
originalPlatform: 'gmail',
|
|
71
|
+
originalMessage: gmailMessage,
|
|
72
|
+
};
|
|
73
|
+
return response;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
console.error('Error in Gmail → SKAI:', error);
|
|
77
|
+
return {
|
|
78
|
+
success: false,
|
|
79
|
+
error: error.message || 'Failed to process message with SKAI agent',
|
|
80
|
+
originalPlatform: 'gmail',
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=gmail-to-skai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gmail-to-skai.js","sourceRoot":"","sources":["../../../../src/lib/actions/gmail-to-skai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const skaiToGmail: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").PieceAuthProperty, {
|
|
2
|
+
webhookPayload: import("@activepieces/pieces-framework").JsonProperty<true>;
|
|
3
|
+
threadData: import("@activepieces/pieces-framework").JsonProperty<true>;
|
|
4
|
+
}>;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.skaiToGmail = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
exports.skaiToGmail = (0, pieces_framework_1.createAction)({
|
|
7
|
+
name: 'skai_to_gmail',
|
|
8
|
+
displayName: 'SKAI → Gmail',
|
|
9
|
+
description: 'Transform SKAI webhook response to Gmail send email format. Prepares reply emails with proper threading. Requires thread data from a prior Get Thread step to resolve sender and subject.',
|
|
10
|
+
props: {
|
|
11
|
+
webhookPayload: pieces_framework_1.Property.Json({
|
|
12
|
+
displayName: 'SKAI Webhook Payload',
|
|
13
|
+
description: 'Output from SKAI Response Webhook trigger',
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
threadData: pieces_framework_1.Property.Json({
|
|
17
|
+
displayName: 'Gmail Thread Data',
|
|
18
|
+
description: 'Output from Gmail Get Thread step — used to resolve reply-to address and subject',
|
|
19
|
+
required: true,
|
|
20
|
+
}),
|
|
21
|
+
},
|
|
22
|
+
run(context) {
|
|
23
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
var _a;
|
|
25
|
+
const { webhookPayload, threadData } = context.propsValue;
|
|
26
|
+
try {
|
|
27
|
+
// Parse webhook payload
|
|
28
|
+
const payload = webhookPayload;
|
|
29
|
+
// Validate platform
|
|
30
|
+
if (!payload.platform || payload.platform !== 'gmail') {
|
|
31
|
+
throw new Error(`Invalid platform: expected 'gmail', got '${payload.platform || 'undefined'}'`);
|
|
32
|
+
}
|
|
33
|
+
// Validate required fields
|
|
34
|
+
const messages = payload.messages || (payload.message ? [payload.message] : []);
|
|
35
|
+
const hasMessages = messages.length > 0 && messages.some((msg) => msg && msg.trim().length > 0);
|
|
36
|
+
const hasMedia = payload.media_urls && payload.media_urls.length > 0;
|
|
37
|
+
if (!payload.external_id || (!hasMessages && !hasMedia)) {
|
|
38
|
+
throw new Error('Missing required fields: external_id and (messages or media_urls)');
|
|
39
|
+
}
|
|
40
|
+
// Extract sender and subject from thread data (last message in thread = most recent inbound)
|
|
41
|
+
const thread = threadData;
|
|
42
|
+
const threadMessages = (thread === null || thread === void 0 ? void 0 : thread.messages) || [];
|
|
43
|
+
// Find the last message that was NOT sent by us (the inbound message to reply to)
|
|
44
|
+
// Fall back to the last message in the thread
|
|
45
|
+
const lastMessage = threadMessages.length > 0
|
|
46
|
+
? threadMessages[threadMessages.length - 1]
|
|
47
|
+
: null;
|
|
48
|
+
let fromAddress = '';
|
|
49
|
+
let subject = '';
|
|
50
|
+
let messageIdHeader = '';
|
|
51
|
+
if ((_a = lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.payload) === null || _a === void 0 ? void 0 : _a.headers) {
|
|
52
|
+
const headers = lastMessage.payload.headers;
|
|
53
|
+
const fromHeader = headers.find((h) => h.name.toLowerCase() === 'from');
|
|
54
|
+
const subjectHeader = headers.find((h) => h.name.toLowerCase() === 'subject');
|
|
55
|
+
const messageIdH = headers.find((h) => h.name.toLowerCase() === 'message-id');
|
|
56
|
+
fromAddress = (fromHeader === null || fromHeader === void 0 ? void 0 : fromHeader.value) || '';
|
|
57
|
+
subject = (subjectHeader === null || subjectHeader === void 0 ? void 0 : subjectHeader.value) || '';
|
|
58
|
+
messageIdHeader = (messageIdH === null || messageIdH === void 0 ? void 0 : messageIdH.value) || '';
|
|
59
|
+
}
|
|
60
|
+
if (!fromAddress) {
|
|
61
|
+
throw new Error('Could not resolve reply-to address from thread data');
|
|
62
|
+
}
|
|
63
|
+
const chatMessageIds = payload.chat_message_ids || [];
|
|
64
|
+
// Combine all messages into a single email body
|
|
65
|
+
const validMessages = messages.filter((msg) => msg && msg.trim().length > 0);
|
|
66
|
+
const emailBody = validMessages.join('\n\n');
|
|
67
|
+
// Build reply subject (add Re: prefix if not already present)
|
|
68
|
+
const replySubject = subject.startsWith('Re:') ? subject : `Re: ${subject}`;
|
|
69
|
+
// Use Message-ID from thread for threading, fall back to payload reference_id
|
|
70
|
+
const inReplyTo = messageIdHeader || payload.reference_id || '';
|
|
71
|
+
// Build email messages array (typically one email per response)
|
|
72
|
+
const emailMessages = [];
|
|
73
|
+
const emailMessage = {
|
|
74
|
+
receiver: fromAddress,
|
|
75
|
+
subject: replySubject,
|
|
76
|
+
body: emailBody,
|
|
77
|
+
body_type: 'plain_text',
|
|
78
|
+
in_reply_to: inReplyTo,
|
|
79
|
+
};
|
|
80
|
+
// Attach chat_message_id for reference tracking
|
|
81
|
+
if (chatMessageIds.length > 0) {
|
|
82
|
+
emailMessage.chat_message_id = chatMessageIds[0];
|
|
83
|
+
}
|
|
84
|
+
// Handle media attachments
|
|
85
|
+
if (hasMedia) {
|
|
86
|
+
const mediaUrls = payload.media_urls || [];
|
|
87
|
+
emailMessage.attachmentUrls = mediaUrls;
|
|
88
|
+
}
|
|
89
|
+
emailMessages.push(emailMessage);
|
|
90
|
+
return {
|
|
91
|
+
messages: emailMessages,
|
|
92
|
+
requiresMultipleSends: false,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
console.error('Error in SKAI → Gmail:', error);
|
|
97
|
+
return {
|
|
98
|
+
success: false,
|
|
99
|
+
error: error.message || 'Failed to transform SKAI response to Gmail format',
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=skai-to-gmail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skai-to-gmail.js","sourceRoot":"","sources":["../../../../src/lib/actions/skai-to-gmail.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.skaiAuth = void 0;
|
|
4
4
|
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
5
|
-
const markdown = `
|
|
6
|
-
## 🤖 SKAI Agents API Key
|
|
7
|
-
|
|
8
|
-
To get your SKAI Agents API key:
|
|
9
|
-
|
|
10
|
-
1. Go to [SKAI Agents Platform](https://agents.skillfulai.io)
|
|
11
|
-
2. Log in to your account
|
|
12
|
-
3. Navigate to Settings → API Keys
|
|
13
|
-
4. Create a new API key or copy an existing one
|
|
14
|
-
5. The key starts with \`sk_\`
|
|
15
|
-
|
|
16
|
-
**Security Notes:**
|
|
17
|
-
- Keep your API key secure and never share it
|
|
18
|
-
- API key grants access to your SKAI agents and conversations
|
|
19
|
-
- You can revoke and regenerate keys at any time
|
|
5
|
+
const markdown = `
|
|
6
|
+
## 🤖 SKAI Agents API Key
|
|
7
|
+
|
|
8
|
+
To get your SKAI Agents API key:
|
|
9
|
+
|
|
10
|
+
1. Go to [SKAI Agents Platform](https://agents.skillfulai.io)
|
|
11
|
+
2. Log in to your account
|
|
12
|
+
3. Navigate to Settings → API Keys
|
|
13
|
+
4. Create a new API key or copy an existing one
|
|
14
|
+
5. The key starts with \`sk_\`
|
|
15
|
+
|
|
16
|
+
**Security Notes:**
|
|
17
|
+
- Keep your API key secure and never share it
|
|
18
|
+
- API key grants access to your SKAI agents and conversations
|
|
19
|
+
- You can revoke and regenerate keys at any time
|
|
20
20
|
`;
|
|
21
21
|
exports.skaiAuth = pieces_framework_1.PieceAuth.CustomAuth({
|
|
22
22
|
required: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic-message.js","sourceRoot":"","sources":["../../../../../src/lib/common/types/generic-message.ts"],"names":[],"mappings":";;;AAqBA;;GAEG;AACH,IAAY,
|
|
1
|
+
{"version":3,"file":"generic-message.js","sourceRoot":"","sources":["../../../../../src/lib/common/types/generic-message.ts"],"names":[],"mappings":";;;AAqBA;;GAEG;AACH,IAAY,QAUX;AAVD,WAAY,QAAQ;IACnB,iCAAqB,CAAA;IACrB,2BAAe,CAAA;IACf,iCAAqB,CAAA;IACrB,mCAAuB,CAAA;IACvB,+BAAmB,CAAA;IACnB,uBAAW,CAAA;IACX,2BAAe,CAAA;IACf,iCAAqB,CAAA;IACrB,2BAAe,CAAA;AAChB,CAAC,EAVW,QAAQ,wBAAR,QAAQ,QAUnB;AAED;;GAEG;AACH,IAAY,SAOX;AAPD,WAAY,SAAS;IACpB,4BAAe,CAAA;IACf,4BAAe,CAAA;IACf,4BAAe,CAAA;IACf,kCAAqB,CAAA;IACrB,4BAAe,CAAA;IACf,gCAAmB,CAAA;AACpB,CAAC,EAPW,SAAS,yBAAT,SAAS,QAOpB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { GenericMessage } from '../common/types/generic-message';
|
|
2
|
+
/**
|
|
3
|
+
* Gmail trigger output format (from google-mail piece new_email trigger)
|
|
4
|
+
* The trigger returns { message: ParsedMail, thread: ThreadResponse }
|
|
5
|
+
*/
|
|
6
|
+
export interface GmailTriggerOutput {
|
|
7
|
+
message: {
|
|
8
|
+
messageId?: string;
|
|
9
|
+
from?: {
|
|
10
|
+
value?: Array<{
|
|
11
|
+
address?: string;
|
|
12
|
+
name?: string;
|
|
13
|
+
}>;
|
|
14
|
+
text?: string;
|
|
15
|
+
};
|
|
16
|
+
to?: {
|
|
17
|
+
value?: Array<{
|
|
18
|
+
address?: string;
|
|
19
|
+
name?: string;
|
|
20
|
+
}>;
|
|
21
|
+
text?: string;
|
|
22
|
+
};
|
|
23
|
+
cc?: {
|
|
24
|
+
value?: Array<{
|
|
25
|
+
address?: string;
|
|
26
|
+
name?: string;
|
|
27
|
+
}>;
|
|
28
|
+
text?: string;
|
|
29
|
+
};
|
|
30
|
+
bcc?: {
|
|
31
|
+
value?: Array<{
|
|
32
|
+
address?: string;
|
|
33
|
+
name?: string;
|
|
34
|
+
}>;
|
|
35
|
+
text?: string;
|
|
36
|
+
};
|
|
37
|
+
subject?: string;
|
|
38
|
+
text?: string;
|
|
39
|
+
html?: string | false;
|
|
40
|
+
date?: string;
|
|
41
|
+
attachments?: Array<{
|
|
42
|
+
filename?: string;
|
|
43
|
+
contentType?: string;
|
|
44
|
+
size?: number;
|
|
45
|
+
url?: string;
|
|
46
|
+
}>;
|
|
47
|
+
headers?: Map<string, string> | Record<string, string>;
|
|
48
|
+
};
|
|
49
|
+
thread?: {
|
|
50
|
+
data?: {
|
|
51
|
+
id?: string;
|
|
52
|
+
historyId?: string;
|
|
53
|
+
messages?: Array<{
|
|
54
|
+
id?: string;
|
|
55
|
+
threadId?: string;
|
|
56
|
+
snippet?: string;
|
|
57
|
+
}>;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Transform Gmail trigger output to generic format for SKAI processing
|
|
63
|
+
*/
|
|
64
|
+
export declare class GmailTransformer {
|
|
65
|
+
transform(gmailOutput: GmailTriggerOutput): GenericMessage;
|
|
66
|
+
private _stripHtml;
|
|
67
|
+
private _mapContentType;
|
|
68
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GmailTransformer = void 0;
|
|
4
|
+
const generic_message_1 = require("../common/types/generic-message");
|
|
5
|
+
/**
|
|
6
|
+
* Transform Gmail trigger output to generic format for SKAI processing
|
|
7
|
+
*/
|
|
8
|
+
class GmailTransformer {
|
|
9
|
+
transform(gmailOutput) {
|
|
10
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
11
|
+
const { message, thread } = gmailOutput;
|
|
12
|
+
// Thread ID is the conversation identifier
|
|
13
|
+
const threadId = ((_a = thread === null || thread === void 0 ? void 0 : thread.data) === null || _a === void 0 ? void 0 : _a.id) || '';
|
|
14
|
+
// Message-ID header is used for reply threading
|
|
15
|
+
const messageId = message.messageId || '';
|
|
16
|
+
// Extract sender info
|
|
17
|
+
const fromAddress = ((_d = (_c = (_b = message.from) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.address) || '';
|
|
18
|
+
const fromName = ((_g = (_f = (_e = message.from) === null || _e === void 0 ? void 0 : _e.value) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.name) || fromAddress;
|
|
19
|
+
// Extract recipient info
|
|
20
|
+
const toAddress = ((_k = (_j = (_h = message.to) === null || _h === void 0 ? void 0 : _h.value) === null || _j === void 0 ? void 0 : _j[0]) === null || _k === void 0 ? void 0 : _k.address) || '';
|
|
21
|
+
// Prefer plain text, fall back to stripped HTML
|
|
22
|
+
const bodyText = message.text || this._stripHtml(message.html) || '';
|
|
23
|
+
const genericMessage = {
|
|
24
|
+
external_id: threadId,
|
|
25
|
+
reference_id: messageId,
|
|
26
|
+
platform: generic_message_1.Platform.GMAIL,
|
|
27
|
+
message: bodyText || undefined,
|
|
28
|
+
timestamp: message.date ? new Date(message.date).toISOString() : new Date().toISOString(),
|
|
29
|
+
unique_handle: toAddress,
|
|
30
|
+
sender_name: fromName || 'Unknown',
|
|
31
|
+
metadata: {
|
|
32
|
+
subject: message.subject || '',
|
|
33
|
+
from_address: fromAddress,
|
|
34
|
+
to_address: toAddress,
|
|
35
|
+
cc: ((_l = message.cc) === null || _l === void 0 ? void 0 : _l.text) || '',
|
|
36
|
+
bcc: ((_m = message.bcc) === null || _m === void 0 ? void 0 : _m.text) || '',
|
|
37
|
+
// Store sender as "user" so BE persists it as platform_user on chat_history
|
|
38
|
+
user: {
|
|
39
|
+
name: fromName || undefined,
|
|
40
|
+
email: fromAddress,
|
|
41
|
+
from_address: fromAddress,
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
// Process attachments
|
|
46
|
+
if (message.attachments && message.attachments.length > 0) {
|
|
47
|
+
const mediaUrls = [];
|
|
48
|
+
const mediaTypes = [];
|
|
49
|
+
for (const attachment of message.attachments) {
|
|
50
|
+
if (attachment.url) {
|
|
51
|
+
mediaUrls.push(attachment.url);
|
|
52
|
+
mediaTypes.push(this._mapContentType(attachment.contentType));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (mediaUrls.length > 0) {
|
|
56
|
+
genericMessage.media_urls = mediaUrls;
|
|
57
|
+
genericMessage.media_types = mediaTypes;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return genericMessage;
|
|
61
|
+
}
|
|
62
|
+
_stripHtml(html) {
|
|
63
|
+
if (!html)
|
|
64
|
+
return '';
|
|
65
|
+
return html
|
|
66
|
+
.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '')
|
|
67
|
+
.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '')
|
|
68
|
+
.replace(/<br\s*\/?>/gi, '\n')
|
|
69
|
+
.replace(/<\/p>/gi, '\n')
|
|
70
|
+
.replace(/<\/div>/gi, '\n')
|
|
71
|
+
.replace(/<[^>]+>/g, '')
|
|
72
|
+
.replace(/ /g, ' ')
|
|
73
|
+
.replace(/&/g, '&')
|
|
74
|
+
.replace(/</g, '<')
|
|
75
|
+
.replace(/>/g, '>')
|
|
76
|
+
.replace(/"/g, '"')
|
|
77
|
+
.replace(/\n{3,}/g, '\n\n')
|
|
78
|
+
.trim();
|
|
79
|
+
}
|
|
80
|
+
_mapContentType(contentType) {
|
|
81
|
+
if (!contentType)
|
|
82
|
+
return generic_message_1.MediaType.DOCUMENT;
|
|
83
|
+
const lower = contentType.toLowerCase();
|
|
84
|
+
if (lower.startsWith('image/'))
|
|
85
|
+
return generic_message_1.MediaType.IMAGE;
|
|
86
|
+
if (lower.startsWith('video/'))
|
|
87
|
+
return generic_message_1.MediaType.VIDEO;
|
|
88
|
+
if (lower.startsWith('audio/'))
|
|
89
|
+
return generic_message_1.MediaType.AUDIO;
|
|
90
|
+
return generic_message_1.MediaType.DOCUMENT;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.GmailTransformer = GmailTransformer;
|
|
94
|
+
//# sourceMappingURL=gmail.transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gmail.transformer.js","sourceRoot":"","sources":["../../../../src/lib/transformers/gmail.transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,10 +11,10 @@ exports.skaiResponseWebhook = (0, pieces_framework_1.createTrigger)({
|
|
|
11
11
|
type: pieces_framework_1.TriggerStrategy.WEBHOOK,
|
|
12
12
|
props: {
|
|
13
13
|
webhookUrl: pieces_framework_1.Property.MarkDown({
|
|
14
|
-
value: `**Webhook URL:**
|
|
15
|
-
\`\`\`text
|
|
16
|
-
{{webhookUrl}}
|
|
17
|
-
\`\`\`
|
|
14
|
+
value: `**Webhook URL:**
|
|
15
|
+
\`\`\`text
|
|
16
|
+
{{webhookUrl}}
|
|
17
|
+
\`\`\`
|
|
18
18
|
`,
|
|
19
19
|
variant: shared_1.MarkdownVariant.INFO,
|
|
20
20
|
}),
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|