@skillful-ai/piece-skai-adapters 0.0.14 → 0.0.15

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 CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@skillful-ai/piece-skai-adapters",
3
- "version": "0.0.14",
3
+ "version": "0.0.15",
4
4
  "type": "commonjs",
5
5
  "main": "./src/index.js",
6
6
  "types": "./src/index.d.ts",
7
7
  "dependencies": {
8
- "@activepieces/pieces-framework": "*",
8
+ "@activepieces/pieces-framework": "^0.20.1",
9
9
  "@sinclair/typebox": "0.34.11",
10
10
  "@skillful-ai/skai-sdk": "*",
11
11
  "axios": "1.8.3",
package/src/index.js CHANGED
@@ -4,10 +4,8 @@ exports.skaiAdapters = void 0;
4
4
  const pieces_framework_1 = require("@activepieces/pieces-framework");
5
5
  const skai_to_whatsapp_1 = require("./lib/actions/skai-to-whatsapp");
6
6
  const skai_to_telegram_1 = require("./lib/actions/skai-to-telegram");
7
- const skai_to_whapi_1 = require("./lib/actions/skai-to-whapi");
8
7
  const whatsapp_to_skai_1 = require("./lib/actions/whatsapp-to-skai");
9
8
  const telegram_to_skai_1 = require("./lib/actions/telegram-to-skai");
10
- const whapi_to_skai_1 = require("./lib/actions/whapi-to-skai");
11
9
  const update_chat_message_reference_1 = require("./lib/actions/update-chat-message-reference");
12
10
  const skai_response_webhook_1 = require("./lib/triggers/skai-response-webhook");
13
11
  exports.skaiAdapters = (0, pieces_framework_1.createPiece)({
@@ -20,10 +18,8 @@ exports.skaiAdapters = (0, pieces_framework_1.createPiece)({
20
18
  actions: [
21
19
  skai_to_whatsapp_1.skaiToWhatsApp,
22
20
  skai_to_telegram_1.skaiToTelegram,
23
- skai_to_whapi_1.skaiToWhapi,
24
21
  whatsapp_to_skai_1.whatsappToSkai,
25
22
  telegram_to_skai_1.telegramToSkai,
26
- whapi_to_skai_1.whapiToSkai,
27
23
  update_chat_message_reference_1.updateChatMessageReference,
28
24
  ],
29
25
  triggers: [skai_response_webhook_1.skaiResponseWebhook],
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/custom/skai-adapters/src/index.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AACxE,qEAAgE;AAChE,qEAAgE;AAChE,+DAA0D;AAC1D,qEAAgE;AAChE,qEAAgE;AAChE,+DAA0D;AAC1D,+FAAyF;AACzF,gFAA2E;AAE9D,QAAA,YAAY,GAAG,IAAA,8BAAW,EAAC;IACvC,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,gEAAgE;IAC7E,IAAI,EAAE,4BAAS,CAAC,IAAI,EAAE;IACtB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,oFAAoF;IAC7F,OAAO,EAAE,CAAC,aAAa,CAAC;IACxB,OAAO,EAAE;QACR,iCAAc;QACd,iCAAc;QACd,2BAAW;QACX,iCAAc;QACd,iCAAc;QACd,2BAAW;QACX,0DAA0B;KAC1B;IACD,QAAQ,EAAE,CAAC,2CAAmB,CAAC;CAC/B,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/custom/skai-adapters/src/index.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AACxE,qEAAgE;AAChE,qEAAgE;AAChE,qEAAgE;AAChE,qEAAgE;AAChE,+FAAyF;AACzF,gFAA2E;AAE9D,QAAA,YAAY,GAAG,IAAA,8BAAW,EAAC;IACvC,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,gEAAgE;IAC7E,IAAI,EAAE,4BAAS,CAAC,IAAI,EAAE;IACtB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,oFAAoF;IAC7F,OAAO,EAAE,CAAC,aAAa,CAAC;IACxB,OAAO,EAAE;QACR,iCAAc;QACd,iCAAc;QACd,iCAAc;QACd,iCAAc;QACd,0DAA0B;KAC1B;IACD,QAAQ,EAAE,CAAC,2CAAmB,CAAC;CAC/B,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare const skaiToWhapi: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").PieceAuthProperty, {
2
- webhookPayload: import("@activepieces/pieces-framework").JsonProperty<true>;
3
- }>;
@@ -1,106 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.skaiToWhapi = void 0;
4
- const tslib_1 = require("tslib");
5
- const pieces_framework_1 = require("@activepieces/pieces-framework");
6
- const message_combiner_1 = require("../common/message-combiner");
7
- exports.skaiToWhapi = (0, pieces_framework_1.createAction)({
8
- name: 'skai_to_whapi',
9
- displayName: 'SKAI → WHAPI',
10
- description: 'Transform SKAI webhook response to WHAPI message format. Combines pre-split messages with media following backend logic.',
11
- props: {
12
- webhookPayload: pieces_framework_1.Property.Json({
13
- displayName: 'SKAI Webhook Payload',
14
- description: 'Output from SKAI Response Webhook trigger',
15
- required: true,
16
- }),
17
- },
18
- run(context) {
19
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
20
- const { webhookPayload } = context.propsValue;
21
- try {
22
- // Parse webhook payload
23
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
- const payload = webhookPayload;
25
- // Validate platform (whapi uses whatsapp as platform internally)
26
- if (!payload.platform ||
27
- (payload.platform !== 'whatsapp' && payload.platform !== 'whapi')) {
28
- throw new Error(`Invalid platform: expected 'whatsapp' or 'whapi', got '${payload.platform || 'undefined'}'`);
29
- }
30
- // Validate required fields
31
- const hasReaction = payload.reaction !== undefined && payload.reaction !== null;
32
- const messages = payload.messages || (payload.message ? [payload.message] : []);
33
- const hasMessages = messages.length > 0 &&
34
- messages.some((msg) => msg && msg.trim().length > 0);
35
- const hasMedia = payload.media_urls && payload.media_urls.length > 0;
36
- if (!payload.external_id ||
37
- (!hasMessages && !hasMedia && !hasReaction)) {
38
- throw new Error('Missing required fields: external_id and (messages or media_urls or reaction)');
39
- }
40
- // Format external_id to ChatID format for WHAPI
41
- const chatId = formatToChatId(payload.external_id);
42
- // Handle reaction messages
43
- if (hasReaction) {
44
- // For reactions, we need the message ID to react to (reference_id)
45
- if (!payload.reference_id) {
46
- throw new Error('Missing required field: reference_id (message ID to react to)');
47
- }
48
- return {
49
- messages: [
50
- {
51
- to: chatId,
52
- reaction: payload.reaction || '', // Empty string means remove reaction
53
- reference_id: payload.reference_id,
54
- },
55
- ],
56
- requiresMultipleSends: false,
57
- };
58
- }
59
- // Filter out empty messages
60
- const validMessages = messages.filter((msg) => msg && msg.trim().length > 0);
61
- const mediaUrls = payload.media_urls || [];
62
- const mediaTypes = payload.media_types || [];
63
- const chatMessageIds = payload.chat_message_ids || [];
64
- // Combine messages and media using the backend's logic
65
- const whapiMessages = (0, message_combiner_1.combineMessagesAndMedia)({
66
- messages: validMessages,
67
- mediaUrls,
68
- mediaTypes,
69
- chatId: chatId,
70
- chatMessageIds: chatMessageIds.length > 0 ? chatMessageIds : undefined,
71
- referenceId: payload.reference_id,
72
- defaultMediaType: 'image',
73
- chatIdFieldName: 'to',
74
- });
75
- // Return all message parts (array if split, single item array if not)
76
- return {
77
- messages: whapiMessages,
78
- requiresMultipleSends: whapiMessages.length > 1,
79
- };
80
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
81
- }
82
- catch (error) {
83
- console.error('Error in SKAI → WHAPI:', error);
84
- return {
85
- success: false,
86
- error: error.message ||
87
- 'Failed to transform SKAI response to WHAPI format',
88
- };
89
- }
90
- });
91
- },
92
- });
93
- /**
94
- * Format phone number to WHAPI ChatID format
95
- */
96
- function formatToChatId(phone) {
97
- // Remove all non-numeric characters except @ and .
98
- const cleaned = phone.replace(/[^0-9@.a-z]/gi, '');
99
- // If already in ChatID format, return as-is
100
- if (cleaned.includes('@')) {
101
- return cleaned;
102
- }
103
- // Default to individual chat format
104
- return `${cleaned}@s.whatsapp.net`;
105
- }
106
- //# sourceMappingURL=skai-to-whapi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skai-to-whapi.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/skai-adapters/src/lib/actions/skai-to-whapi.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export declare const whapiToSkai: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").PieceAuthProperty, {
2
- whapiMessage: import("@activepieces/pieces-framework").JsonProperty<true>;
3
- agent: import("@activepieces/pieces-framework").DropdownProperty<string, false>;
4
- webhookUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
5
- chatBufferWindowSeconds: import("@activepieces/pieces-framework").NumberProperty<false>;
6
- }>;
@@ -1,92 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.whapiToSkai = void 0;
4
- const tslib_1 = require("tslib");
5
- const pieces_framework_1 = require("@activepieces/pieces-framework");
6
- const whapi_transformer_1 = require("../transformers/whapi.transformer");
7
- const skai_client_1 = require("../common/skai-client");
8
- const dropdowns_1 = require("../common/dropdowns");
9
- exports.whapiToSkai = (0, pieces_framework_1.createAction)({
10
- name: 'whapi_to_skai',
11
- displayName: 'WHAPI → SKAI Agent',
12
- description: 'Transform WHAPI message to generic format and process with SKAI agent',
13
- props: {
14
- whapiMessage: pieces_framework_1.Property.Json({
15
- displayName: 'WHAPI Message',
16
- description: 'Output from WHAPI New Message 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 { whapiMessage, 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 WHAPI message to GenericMessage format
42
- const transformer = new whapi_transformer_1.WhapiTransformer();
43
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
- const genericMessage = transformer.transform(whapiMessage);
45
- // Prepare request body
46
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
47
- const requestBody = {
48
- external_id: genericMessage.external_id,
49
- reference_id: genericMessage.reference_id,
50
- platform: genericMessage.platform,
51
- message: genericMessage.message,
52
- sender_name: genericMessage.sender_name,
53
- unique_handle: genericMessage.unique_handle,
54
- media_urls: genericMessage.media_urls || [],
55
- media_base64: genericMessage.media_base64 || [],
56
- media_types: genericMessage.media_types || [],
57
- metadata: genericMessage.metadata || {},
58
- webhook_url: webhookUrl,
59
- chat_buffer_window_seconds: Math.round(bufferSeconds),
60
- };
61
- // Call SKAI Agents API using server context
62
- const skaiResponse = yield skai_client_1.skaiClient.processMessage({
63
- serverUrl: context.server.publicUrl,
64
- token: context.server.token,
65
- agentId: agent || null,
66
- payload: requestBody,
67
- });
68
- // Build response
69
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
- const response = {
71
- success: true,
72
- skaiResponse,
73
- genericMessage,
74
- originalPlatform: 'whapi',
75
- originalMessage: whapiMessage,
76
- };
77
- return response;
78
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
79
- }
80
- catch (error) {
81
- console.error('❌ Error in WHAPI → SKAI:', error);
82
- return {
83
- success: false,
84
- error: error.message ||
85
- 'Failed to process message with SKAI agent',
86
- originalPlatform: 'whapi',
87
- };
88
- }
89
- });
90
- },
91
- });
92
- //# sourceMappingURL=whapi-to-skai.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"whapi-to-skai.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/skai-adapters/src/lib/actions/whapi-to-skai.ts"],"names":[],"mappings":"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"}
@@ -1,74 +0,0 @@
1
- import { GenericMessage } from '../common/types/generic-message';
2
- /**
3
- * WHAPI message structure (output from WHAPI piece trigger)
4
- * This matches the output format from the WHAPI new-message trigger
5
- */
6
- export interface WhapiMessage {
7
- from: string;
8
- messageId: string;
9
- timestamp: number;
10
- type: string;
11
- text?: string;
12
- senderName?: string;
13
- chatId: string;
14
- reaction?: string;
15
- reactedMessageId?: string;
16
- image?: {
17
- id: string;
18
- mimeType?: string;
19
- link?: string;
20
- };
21
- video?: {
22
- id: string;
23
- mimeType?: string;
24
- link?: string;
25
- };
26
- audio?: {
27
- id: string;
28
- mimeType?: string;
29
- link?: string;
30
- };
31
- voice?: {
32
- id: string;
33
- mimeType?: string;
34
- link?: string;
35
- };
36
- document?: {
37
- id: string;
38
- mimeType?: string;
39
- filename?: string;
40
- link?: string;
41
- };
42
- sticker?: {
43
- id: string;
44
- mimeType?: string;
45
- link?: string;
46
- };
47
- location?: {
48
- latitude: number;
49
- longitude: number;
50
- name?: string;
51
- address?: string;
52
- };
53
- contacts?: unknown[];
54
- rawPayload?: unknown;
55
- }
56
- export declare class WhapiTransformer {
57
- /**
58
- * Transform WHAPI message to GenericMessage format
59
- */
60
- transform(whapiMessage: WhapiMessage): GenericMessage;
61
- /**
62
- * Extract text message from WHAPI message
63
- */
64
- private extractMessage;
65
- /**
66
- * Extract media information from WHAPI message
67
- * WHAPI provides direct download links
68
- */
69
- private extractMedia;
70
- /**
71
- * Convert Unix timestamp to ISO 8601 format
72
- */
73
- private convertTimestamp;
74
- }
@@ -1,141 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WhapiTransformer = void 0;
4
- const generic_message_1 = require("../common/types/generic-message");
5
- class WhapiTransformer {
6
- /**
7
- * Transform WHAPI message to GenericMessage format
8
- */
9
- transform(whapiMessage) {
10
- if (!(whapiMessage === null || whapiMessage === void 0 ? void 0 : whapiMessage.from) || !(whapiMessage === null || whapiMessage === void 0 ? void 0 : whapiMessage.messageId)) {
11
- throw new Error('Invalid WHAPI message: missing required fields (from, messageId)');
12
- }
13
- // Extract phone number from ChatID format (remove @s.whatsapp.net or @g.us)
14
- const externalId = whapiMessage.from
15
- .replace('@s.whatsapp.net', '')
16
- .replace('@g.us', '');
17
- const genericMessage = Object.assign(Object.assign({ external_id: externalId, reference_id: whapiMessage.messageId, platform: generic_message_1.Platform.WHATSAPP, message: this.extractMessage(whapiMessage), timestamp: this.convertTimestamp(whapiMessage.timestamp), sender_name: whapiMessage.senderName, unique_handle: whapiMessage.chatId }, (whapiMessage.reaction !== undefined && {
18
- reaction: whapiMessage.reaction,
19
- })), { metadata: {
20
- type: whapiMessage.type,
21
- timestamp: whapiMessage.timestamp,
22
- chat_id: whapiMessage.chatId,
23
- source: 'whapi', // Distinguish from Meta WhatsApp
24
- // Add user profile information
25
- user: {
26
- phone_number: externalId,
27
- name: whapiMessage.senderName,
28
- },
29
- } });
30
- // Handle media attachments
31
- const media = this.extractMedia(whapiMessage);
32
- if (media) {
33
- genericMessage.media_urls = media.urls;
34
- genericMessage.media_types = media.types;
35
- // Ensure metadata exists
36
- if (!genericMessage.metadata) {
37
- genericMessage.metadata = {};
38
- }
39
- // Add media metadata
40
- if (whapiMessage.image) {
41
- genericMessage.metadata['image'] = whapiMessage.image;
42
- }
43
- if (whapiMessage.video) {
44
- genericMessage.metadata['video'] = whapiMessage.video;
45
- }
46
- if (whapiMessage.audio) {
47
- genericMessage.metadata['audio'] = whapiMessage.audio;
48
- }
49
- if (whapiMessage.document) {
50
- genericMessage.metadata['document'] = whapiMessage.document;
51
- }
52
- if (whapiMessage.voice) {
53
- genericMessage.metadata['voice'] = whapiMessage.voice;
54
- }
55
- }
56
- return genericMessage;
57
- }
58
- /**
59
- * Extract text message from WHAPI message
60
- */
61
- extractMessage(message) {
62
- var _a, _b;
63
- // Priority: explicit text field, then captions, then type description
64
- if (message.text) {
65
- return message.text;
66
- }
67
- switch (message.type) {
68
- case 'text':
69
- return message.text || '';
70
- case 'reaction':
71
- return undefined;
72
- case 'image':
73
- return '[Image]';
74
- case 'video':
75
- return '[Video]';
76
- case 'audio':
77
- return '[Audio Message]';
78
- case 'document':
79
- return `[Document${((_a = message.document) === null || _a === void 0 ? void 0 : _a.filename) ? ': ' + message.document.filename : ''}]`;
80
- case 'voice':
81
- return '[Voice Message]';
82
- case 'sticker':
83
- return '[Sticker]';
84
- case 'location':
85
- return ((_b = message.location) === null || _b === void 0 ? void 0 : _b.name)
86
- ? `[Location: ${message.location.name}]`
87
- : '[Location]';
88
- case 'contact':
89
- case 'contacts':
90
- return '[Contact]';
91
- default:
92
- return `[Unsupported Message Type: ${message.type}]`;
93
- }
94
- }
95
- /**
96
- * Extract media information from WHAPI message
97
- * WHAPI provides direct download links
98
- */
99
- extractMedia(message) {
100
- var _a, _b, _c, _d, _e, _f;
101
- const media = {
102
- urls: [],
103
- types: [],
104
- };
105
- if ((_a = message.image) === null || _a === void 0 ? void 0 : _a.link) {
106
- media.urls.push(message.image.link);
107
- media.types.push(generic_message_1.MediaType.IMAGE);
108
- }
109
- if ((_b = message.video) === null || _b === void 0 ? void 0 : _b.link) {
110
- media.urls.push(message.video.link);
111
- media.types.push(generic_message_1.MediaType.VIDEO);
112
- }
113
- if ((_c = message.audio) === null || _c === void 0 ? void 0 : _c.link) {
114
- media.urls.push(message.audio.link);
115
- media.types.push(generic_message_1.MediaType.AUDIO);
116
- }
117
- if ((_d = message.document) === null || _d === void 0 ? void 0 : _d.link) {
118
- media.urls.push(message.document.link);
119
- media.types.push(generic_message_1.MediaType.DOCUMENT);
120
- }
121
- if ((_e = message.voice) === null || _e === void 0 ? void 0 : _e.link) {
122
- media.urls.push(message.voice.link);
123
- media.types.push(generic_message_1.MediaType.VOICE);
124
- }
125
- if ((_f = message.sticker) === null || _f === void 0 ? void 0 : _f.link) {
126
- media.urls.push(message.sticker.link);
127
- media.types.push(generic_message_1.MediaType.STICKER);
128
- }
129
- return media.urls.length > 0 ? media : null;
130
- }
131
- /**
132
- * Convert Unix timestamp to ISO 8601 format
133
- */
134
- convertTimestamp(unixTimestamp) {
135
- const timestampMs = unixTimestamp * 1000;
136
- const date = new Date(timestampMs);
137
- return date.toISOString();
138
- }
139
- }
140
- exports.WhapiTransformer = WhapiTransformer;
141
- //# sourceMappingURL=whapi.transformer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"whapi.transformer.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/skai-adapters/src/lib/transformers/whapi.transformer.ts"],"names":[],"mappings":"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"}