@skillful-ai/piece-skai-adapters 0.0.1
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/README.md +325 -0
- package/package.json +36 -0
- package/skillful-ai-piece-skai-adapters-0.0.1.tgz +0 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +25 -0
- package/src/index.js.map +1 -0
- package/src/lib/actions/skai-to-telegram.d.ts +3 -0
- package/src/lib/actions/skai-to-telegram.js +192 -0
- package/src/lib/actions/skai-to-telegram.js.map +1 -0
- package/src/lib/actions/skai-to-whatsapp.d.ts +3 -0
- package/src/lib/actions/skai-to-whatsapp.js +179 -0
- package/src/lib/actions/skai-to-whatsapp.js.map +1 -0
- package/src/lib/actions/telegram-to-skai.d.ts +6 -0
- package/src/lib/actions/telegram-to-skai.js +93 -0
- package/src/lib/actions/telegram-to-skai.js.map +1 -0
- package/src/lib/actions/whatsapp-to-skai.d.ts +6 -0
- package/src/lib/actions/whatsapp-to-skai.js +93 -0
- package/src/lib/actions/whatsapp-to-skai.js.map +1 -0
- package/src/lib/auth/skai.auth.d.ts +3 -0
- package/src/lib/auth/skai.auth.js +32 -0
- package/src/lib/auth/skai.auth.js.map +1 -0
- package/src/lib/common/dropdowns.d.ts +5 -0
- package/src/lib/common/dropdowns.js +61 -0
- package/src/lib/common/dropdowns.js.map +1 -0
- package/src/lib/common/skai-client.d.ts +65 -0
- package/src/lib/common/skai-client.js +173 -0
- package/src/lib/common/skai-client.js.map +1 -0
- package/src/lib/common/types/generic-message.d.ts +44 -0
- package/src/lib/common/types/generic-message.js +27 -0
- package/src/lib/common/types/generic-message.js.map +1 -0
- package/src/lib/transformers/telegram.transformer.d.ts +78 -0
- package/src/lib/transformers/telegram.transformer.js +72 -0
- package/src/lib/transformers/telegram.transformer.js.map +1 -0
- package/src/lib/transformers/whatsapp.transformer.d.ts +73 -0
- package/src/lib/transformers/whatsapp.transformer.js +136 -0
- package/src/lib/transformers/whatsapp.transformer.js.map +1 -0
- package/src/lib/triggers/skai-response-webhook.d.ts +20 -0
- package/src/lib/triggers/skai-response-webhook.js +144 -0
- package/src/lib/triggers/skai-response-webhook.js.map +1 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.skaiResponseWebhook = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
7
|
+
const shared_1 = require("@activepieces/shared");
|
|
8
|
+
exports.skaiResponseWebhook = (0, pieces_framework_1.createTrigger)({
|
|
9
|
+
name: 'skai_response_webhook',
|
|
10
|
+
displayName: 'SKAI Response Webhook',
|
|
11
|
+
description: 'Receives asynchronous responses from SKAI backend when message processing is complete',
|
|
12
|
+
type: pieces_framework_1.TriggerStrategy.WEBHOOK,
|
|
13
|
+
props: {
|
|
14
|
+
webhookUrl: pieces_framework_1.Property.MarkDown({
|
|
15
|
+
value: `**Webhook URL:**
|
|
16
|
+
\`\`\`text
|
|
17
|
+
{{webhookUrl}}
|
|
18
|
+
\`\`\`
|
|
19
|
+
`,
|
|
20
|
+
variant: shared_1.MarkdownVariant.INFO,
|
|
21
|
+
}),
|
|
22
|
+
},
|
|
23
|
+
onEnable(context) {
|
|
24
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
yield context.store.put('webhook_url', context.webhookUrl);
|
|
26
|
+
return;
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
onDisable(context) {
|
|
30
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
const webhookUrl = yield context.store.get('webhook_url');
|
|
32
|
+
if (webhookUrl) {
|
|
33
|
+
console.log('Disabled webhook URL was:', webhookUrl);
|
|
34
|
+
}
|
|
35
|
+
yield context.store.put('webhook_url', null);
|
|
36
|
+
return;
|
|
37
|
+
});
|
|
38
|
+
},
|
|
39
|
+
run(context) {
|
|
40
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
var _a, _b, _c;
|
|
42
|
+
console.log('📥 SKAI Response Webhook received');
|
|
43
|
+
const authHeader = context.payload.headers['authorization'];
|
|
44
|
+
if (!authHeader) {
|
|
45
|
+
throw new Error('Missing Authorization header - webhook requires bearer token authentication');
|
|
46
|
+
}
|
|
47
|
+
// Check if it's a Bearer token
|
|
48
|
+
if (!authHeader.toLowerCase().startsWith('bearer ')) {
|
|
49
|
+
throw new Error('Invalid Authorization header format - expected "Bearer <token>"');
|
|
50
|
+
}
|
|
51
|
+
// Extract token (remove 'Bearer ' prefix)
|
|
52
|
+
const token = authHeader.substring(7).trim();
|
|
53
|
+
if (!token || token.length === 0) {
|
|
54
|
+
throw new Error('Empty bearer token - authentication failed');
|
|
55
|
+
}
|
|
56
|
+
console.log('🔍 Verifying bearer token with ActivePieces API...');
|
|
57
|
+
// Validate token by calling ActivePieces API
|
|
58
|
+
try {
|
|
59
|
+
// Get the server URL from context
|
|
60
|
+
const serverUrl = context.server.publicUrl;
|
|
61
|
+
// Ensure URL ends with /
|
|
62
|
+
const baseUrl = serverUrl.endsWith('/') ? serverUrl : serverUrl + '/';
|
|
63
|
+
console.log('Validating token against:', baseUrl);
|
|
64
|
+
// Make a lightweight API call to verify the token
|
|
65
|
+
// Using /api/v1/custom-embedding/auth as a fast auth verification endpoint
|
|
66
|
+
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
67
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
68
|
+
url: `${baseUrl}api/v1/custom-embedding/auth`,
|
|
69
|
+
authentication: {
|
|
70
|
+
type: pieces_common_1.AuthenticationType.BEARER_TOKEN,
|
|
71
|
+
token: token,
|
|
72
|
+
},
|
|
73
|
+
timeout: 3000, // 3 second timeout (faster check)
|
|
74
|
+
});
|
|
75
|
+
// If we get here, token is valid
|
|
76
|
+
if (response.status === 200) {
|
|
77
|
+
console.log('✅ Bearer token validated successfully');
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
throw new Error(`Unexpected response status: ${response.status}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.error('❌ Token validation failed:', error.message);
|
|
85
|
+
// Check for authentication errors
|
|
86
|
+
if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 || ((_b = error.response) === null || _b === void 0 ? void 0 : _b.status) === 403) {
|
|
87
|
+
throw new Error('Invalid or expired bearer token - authentication failed');
|
|
88
|
+
}
|
|
89
|
+
// Check for network errors
|
|
90
|
+
if (error.code === 'ETIMEDOUT' || ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('timeout'))) {
|
|
91
|
+
throw new Error('Token validation timeout - ActivePieces API may be unreachable');
|
|
92
|
+
}
|
|
93
|
+
// Generic error
|
|
94
|
+
throw new Error(`Token validation failed: ${error.message || 'Unknown error'}`);
|
|
95
|
+
}
|
|
96
|
+
// Extract and validate payload
|
|
97
|
+
const payload = context.payload.body;
|
|
98
|
+
// Validate required fields
|
|
99
|
+
const requiredFields = [
|
|
100
|
+
'external_id',
|
|
101
|
+
'platform',
|
|
102
|
+
'message',
|
|
103
|
+
];
|
|
104
|
+
const missingFields = requiredFields.filter((field) => !payload[field]);
|
|
105
|
+
if (missingFields.length > 0) {
|
|
106
|
+
throw new Error(`Missing required fields: ${missingFields.join(', ')}`);
|
|
107
|
+
}
|
|
108
|
+
// Return structured webhook payload
|
|
109
|
+
const webhookPayload = {
|
|
110
|
+
reference_id: payload.reference_id,
|
|
111
|
+
external_id: payload.external_id,
|
|
112
|
+
platform: payload.platform,
|
|
113
|
+
message: payload.message,
|
|
114
|
+
media_urls: payload.media_urls || [],
|
|
115
|
+
media_types: payload.media_types || [],
|
|
116
|
+
};
|
|
117
|
+
return [webhookPayload];
|
|
118
|
+
});
|
|
119
|
+
},
|
|
120
|
+
test(context) {
|
|
121
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
// Return sample data for testing flows
|
|
123
|
+
const samplePayload = {
|
|
124
|
+
reference_id: 'test_sess_456',
|
|
125
|
+
external_id: '1234567890',
|
|
126
|
+
platform: 'whatsapp',
|
|
127
|
+
message: 'This is a test response from SKAI. The weather in New York is sunny, 72°F.',
|
|
128
|
+
media_urls: [],
|
|
129
|
+
media_types: [],
|
|
130
|
+
};
|
|
131
|
+
console.log('🧪 Test mode: Returning sample webhook payload');
|
|
132
|
+
return [samplePayload];
|
|
133
|
+
});
|
|
134
|
+
},
|
|
135
|
+
sampleData: {
|
|
136
|
+
reference_id: 'sample_sess_456',
|
|
137
|
+
external_id: '1234567890',
|
|
138
|
+
platform: 'whatsapp',
|
|
139
|
+
message: 'Sample SKAI agent response message',
|
|
140
|
+
media_urls: [],
|
|
141
|
+
media_types: [],
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
//# sourceMappingURL=skai-response-webhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skai-response-webhook.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/skai-adapters/src/lib/triggers/skai-response-webhook.ts"],"names":[],"mappings":"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"}
|