@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.
Files changed (39) hide show
  1. package/README.md +325 -0
  2. package/package.json +36 -0
  3. package/skillful-ai-piece-skai-adapters-0.0.1.tgz +0 -0
  4. package/src/index.d.ts +1 -0
  5. package/src/index.js +25 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/actions/skai-to-telegram.d.ts +3 -0
  8. package/src/lib/actions/skai-to-telegram.js +192 -0
  9. package/src/lib/actions/skai-to-telegram.js.map +1 -0
  10. package/src/lib/actions/skai-to-whatsapp.d.ts +3 -0
  11. package/src/lib/actions/skai-to-whatsapp.js +179 -0
  12. package/src/lib/actions/skai-to-whatsapp.js.map +1 -0
  13. package/src/lib/actions/telegram-to-skai.d.ts +6 -0
  14. package/src/lib/actions/telegram-to-skai.js +93 -0
  15. package/src/lib/actions/telegram-to-skai.js.map +1 -0
  16. package/src/lib/actions/whatsapp-to-skai.d.ts +6 -0
  17. package/src/lib/actions/whatsapp-to-skai.js +93 -0
  18. package/src/lib/actions/whatsapp-to-skai.js.map +1 -0
  19. package/src/lib/auth/skai.auth.d.ts +3 -0
  20. package/src/lib/auth/skai.auth.js +32 -0
  21. package/src/lib/auth/skai.auth.js.map +1 -0
  22. package/src/lib/common/dropdowns.d.ts +5 -0
  23. package/src/lib/common/dropdowns.js +61 -0
  24. package/src/lib/common/dropdowns.js.map +1 -0
  25. package/src/lib/common/skai-client.d.ts +65 -0
  26. package/src/lib/common/skai-client.js +173 -0
  27. package/src/lib/common/skai-client.js.map +1 -0
  28. package/src/lib/common/types/generic-message.d.ts +44 -0
  29. package/src/lib/common/types/generic-message.js +27 -0
  30. package/src/lib/common/types/generic-message.js.map +1 -0
  31. package/src/lib/transformers/telegram.transformer.d.ts +78 -0
  32. package/src/lib/transformers/telegram.transformer.js +72 -0
  33. package/src/lib/transformers/telegram.transformer.js.map +1 -0
  34. package/src/lib/transformers/whatsapp.transformer.d.ts +73 -0
  35. package/src/lib/transformers/whatsapp.transformer.js +136 -0
  36. package/src/lib/transformers/whatsapp.transformer.js.map +1 -0
  37. package/src/lib/triggers/skai-response-webhook.d.ts +20 -0
  38. package/src/lib/triggers/skai-response-webhook.js +144 -0
  39. 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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"}