piece-signal-cli-rest-api 0.2.0 → 0.2.2

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 (179) hide show
  1. package/package.json +26 -4
  2. package/src/index.d.ts +8 -0
  3. package/src/index.js +89 -0
  4. package/src/index.js.map +1 -0
  5. package/src/lib/actions/add-admins-to-group.d.ts +12 -0
  6. package/src/lib/actions/add-admins-to-group.js +45 -0
  7. package/src/lib/actions/add-admins-to-group.js.map +1 -0
  8. package/src/lib/actions/add-device.d.ts +11 -0
  9. package/src/lib/actions/add-device.js +40 -0
  10. package/src/lib/actions/add-device.js.map +1 -0
  11. package/src/lib/actions/add-members-to-group.d.ts +12 -0
  12. package/src/lib/actions/add-members-to-group.js +45 -0
  13. package/src/lib/actions/add-members-to-group.js.map +1 -0
  14. package/src/lib/actions/block-group.d.ts +11 -0
  15. package/src/lib/actions/block-group.js +37 -0
  16. package/src/lib/actions/block-group.js.map +1 -0
  17. package/src/lib/actions/create-group.d.ts +18 -0
  18. package/src/lib/actions/create-group.js +117 -0
  19. package/src/lib/actions/create-group.js.map +1 -0
  20. package/src/lib/actions/delete-group.d.ts +11 -0
  21. package/src/lib/actions/delete-group.js +37 -0
  22. package/src/lib/actions/delete-group.js.map +1 -0
  23. package/src/lib/actions/get-contact.d.ts +11 -0
  24. package/src/lib/actions/get-contact.js +37 -0
  25. package/src/lib/actions/get-contact.js.map +1 -0
  26. package/src/lib/actions/get-group.d.ts +11 -0
  27. package/src/lib/actions/get-group.js +37 -0
  28. package/src/lib/actions/get-group.js.map +1 -0
  29. package/src/lib/actions/get-qr-code-link.d.ts +11 -0
  30. package/src/lib/actions/get-qr-code-link.js +60 -0
  31. package/src/lib/actions/get-qr-code-link.js.map +1 -0
  32. package/src/lib/actions/join-group.d.ts +11 -0
  33. package/src/lib/actions/join-group.js +37 -0
  34. package/src/lib/actions/join-group.js.map +1 -0
  35. package/src/lib/actions/list-accounts.d.ts +8 -0
  36. package/src/lib/actions/list-accounts.js +23 -0
  37. package/src/lib/actions/list-accounts.js.map +1 -0
  38. package/src/lib/actions/list-attachments.d.ts +8 -0
  39. package/src/lib/actions/list-attachments.js +23 -0
  40. package/src/lib/actions/list-attachments.js.map +1 -0
  41. package/src/lib/actions/list-contacts.d.ts +10 -0
  42. package/src/lib/actions/list-contacts.js +32 -0
  43. package/src/lib/actions/list-contacts.js.map +1 -0
  44. package/src/lib/actions/list-devices.d.ts +10 -0
  45. package/src/lib/actions/list-devices.js +32 -0
  46. package/src/lib/actions/list-devices.js.map +1 -0
  47. package/src/lib/actions/list-groups.d.ts +10 -0
  48. package/src/lib/actions/list-groups.js +32 -0
  49. package/src/lib/actions/list-groups.js.map +1 -0
  50. package/src/lib/actions/list-identities.d.ts +10 -0
  51. package/src/lib/actions/list-identities.js +32 -0
  52. package/src/lib/actions/list-identities.js.map +1 -0
  53. package/src/lib/actions/quit-group.d.ts +11 -0
  54. package/src/lib/actions/quit-group.js +37 -0
  55. package/src/lib/actions/quit-group.js.map +1 -0
  56. package/src/lib/actions/receive-messages.d.ts +15 -0
  57. package/src/lib/actions/receive-messages.js +100 -0
  58. package/src/lib/actions/receive-messages.js.map +1 -0
  59. package/src/lib/actions/remote-delete-message.d.ts +12 -0
  60. package/src/lib/actions/remote-delete-message.js +46 -0
  61. package/src/lib/actions/remote-delete-message.js.map +1 -0
  62. package/src/lib/actions/remove-admins-from-group.d.ts +12 -0
  63. package/src/lib/actions/remove-admins-from-group.js +45 -0
  64. package/src/lib/actions/remove-admins-from-group.js.map +1 -0
  65. package/src/lib/actions/remove-device.d.ts +11 -0
  66. package/src/lib/actions/remove-device.js +37 -0
  67. package/src/lib/actions/remove-device.js.map +1 -0
  68. package/src/lib/actions/remove-members-from-group.d.ts +12 -0
  69. package/src/lib/actions/remove-members-from-group.js +45 -0
  70. package/src/lib/actions/remove-members-from-group.js.map +1 -0
  71. package/src/lib/actions/remove-reaction.d.ts +13 -0
  72. package/src/lib/actions/remove-reaction.js +52 -0
  73. package/src/lib/actions/remove-reaction.js.map +1 -0
  74. package/src/lib/actions/request-approval-message.d.ts +15 -0
  75. package/src/lib/actions/request-approval-message.js +184 -0
  76. package/src/lib/actions/request-approval-message.js.map +1 -0
  77. package/src/lib/actions/resume-approval-flow.d.ts +11 -0
  78. package/src/lib/actions/resume-approval-flow.js +181 -0
  79. package/src/lib/actions/resume-approval-flow.js.map +1 -0
  80. package/src/lib/actions/search-numbers.d.ts +11 -0
  81. package/src/lib/actions/search-numbers.js +42 -0
  82. package/src/lib/actions/search-numbers.js.map +1 -0
  83. package/src/lib/actions/send-message.d.ts +27 -0
  84. package/src/lib/actions/send-message.js +176 -0
  85. package/src/lib/actions/send-message.js.map +1 -0
  86. package/src/lib/actions/send-reaction.d.ts +14 -0
  87. package/src/lib/actions/send-reaction.js +58 -0
  88. package/src/lib/actions/send-reaction.js.map +1 -0
  89. package/src/lib/actions/send-receipt.d.ts +13 -0
  90. package/src/lib/actions/send-receipt.js +58 -0
  91. package/src/lib/actions/send-receipt.js.map +1 -0
  92. package/src/lib/actions/start-typing.d.ts +11 -0
  93. package/src/lib/actions/start-typing.js +40 -0
  94. package/src/lib/actions/start-typing.js.map +1 -0
  95. package/src/lib/actions/stop-typing.d.ts +11 -0
  96. package/src/lib/actions/stop-typing.js +40 -0
  97. package/src/lib/actions/stop-typing.js.map +1 -0
  98. package/src/lib/actions/sync-contacts.d.ts +10 -0
  99. package/src/lib/actions/sync-contacts.js +32 -0
  100. package/src/lib/actions/sync-contacts.js.map +1 -0
  101. package/src/lib/actions/update-account-settings.d.ts +12 -0
  102. package/src/lib/actions/update-account-settings.js +49 -0
  103. package/src/lib/actions/update-account-settings.js.map +1 -0
  104. package/src/lib/actions/update-contact.d.ts +13 -0
  105. package/src/lib/actions/update-contact.js +56 -0
  106. package/src/lib/actions/update-contact.js.map +1 -0
  107. package/src/lib/actions/update-group.d.ts +19 -0
  108. package/src/lib/actions/update-group.js +125 -0
  109. package/src/lib/actions/update-group.js.map +1 -0
  110. package/src/lib/actions/update-profile.d.ts +13 -0
  111. package/src/lib/actions/update-profile.js +56 -0
  112. package/src/lib/actions/update-profile.js.map +1 -0
  113. package/src/lib/common/api-client.d.ts +24 -0
  114. package/src/lib/common/api-client.js +103 -0
  115. package/src/lib/common/api-client.js.map +1 -0
  116. package/src/lib/common/auth.d.ts +8 -0
  117. package/src/lib/common/auth.js +68 -0
  118. package/src/lib/common/auth.js.map +1 -0
  119. package/src/lib/common/message-utils.d.ts +81 -0
  120. package/src/lib/common/message-utils.js +327 -0
  121. package/src/lib/common/message-utils.js.map +1 -0
  122. package/src/lib/common/types.d.ts +65 -0
  123. package/src/lib/common/types.js +3 -0
  124. package/src/lib/common/types.js.map +1 -0
  125. package/src/lib/common/utils.d.ts +23 -0
  126. package/src/lib/common/utils.js +105 -0
  127. package/src/lib/common/utils.js.map +1 -0
  128. package/src/lib/triggers/new-group-member.d.ts +50 -0
  129. package/src/lib/triggers/new-group-member.js +155 -0
  130. package/src/lib/triggers/new-group-member.js.map +1 -0
  131. package/src/lib/triggers/new-message-received.d.ts +58 -0
  132. package/src/lib/triggers/new-message-received.js +469 -0
  133. package/src/lib/triggers/new-message-received.js.map +1 -0
  134. package/project.json +0 -58
  135. package/src/index.ts +0 -87
  136. package/src/lib/actions/add-admins-to-group.ts +0 -50
  137. package/src/lib/actions/add-device.ts +0 -45
  138. package/src/lib/actions/add-members-to-group.ts +0 -50
  139. package/src/lib/actions/block-group.ts +0 -36
  140. package/src/lib/actions/create-group.ts +0 -139
  141. package/src/lib/actions/delete-group.ts +0 -36
  142. package/src/lib/actions/get-contact.ts +0 -42
  143. package/src/lib/actions/get-group.ts +0 -37
  144. package/src/lib/actions/get-qr-code-link.ts +0 -62
  145. package/src/lib/actions/join-group.ts +0 -36
  146. package/src/lib/actions/list-accounts.ts +0 -20
  147. package/src/lib/actions/list-attachments.ts +0 -20
  148. package/src/lib/actions/list-contacts.ts +0 -37
  149. package/src/lib/actions/list-devices.ts +0 -38
  150. package/src/lib/actions/list-groups.ts +0 -32
  151. package/src/lib/actions/list-identities.ts +0 -32
  152. package/src/lib/actions/quit-group.ts +0 -36
  153. package/src/lib/actions/receive-messages.ts +0 -108
  154. package/src/lib/actions/remote-delete-message.ts +0 -56
  155. package/src/lib/actions/remove-admins-from-group.ts +0 -50
  156. package/src/lib/actions/remove-device.ts +0 -36
  157. package/src/lib/actions/remove-members-from-group.ts +0 -50
  158. package/src/lib/actions/remove-reaction.ts +0 -59
  159. package/src/lib/actions/request-approval-message.ts +0 -215
  160. package/src/lib/actions/search-numbers.ts +0 -47
  161. package/src/lib/actions/send-message.ts +0 -189
  162. package/src/lib/actions/send-reaction.ts +0 -66
  163. package/src/lib/actions/send-receipt.ts +0 -65
  164. package/src/lib/actions/start-typing.ts +0 -45
  165. package/src/lib/actions/stop-typing.ts +0 -45
  166. package/src/lib/actions/sync-contacts.ts +0 -31
  167. package/src/lib/actions/update-account-settings.ts +0 -57
  168. package/src/lib/actions/update-contact.ts +0 -65
  169. package/src/lib/actions/update-group.ts +0 -145
  170. package/src/lib/actions/update-profile.ts +0 -65
  171. package/src/lib/common/api-client.ts +0 -150
  172. package/src/lib/common/auth.ts +0 -66
  173. package/src/lib/common/message-utils.ts +0 -449
  174. package/src/lib/common/types.ts +0 -73
  175. package/src/lib/common/utils.ts +0 -106
  176. package/src/lib/triggers/new-group-member.ts +0 -176
  177. package/src/lib/triggers/new-message-received.ts +0 -618
  178. package/tsconfig.json +0 -19
  179. package/tsconfig.lib.json +0 -11
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SignalCliApiClient = exports.SignalCliApiError = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_common_1 = require("@activepieces/pieces-common");
6
+ class SignalCliApiError extends Error {
7
+ constructor(message, statusCode, challengeTokens, account) {
8
+ super(message);
9
+ this.statusCode = statusCode;
10
+ this.challengeTokens = challengeTokens;
11
+ this.account = account;
12
+ this.name = 'SignalCliApiError';
13
+ }
14
+ }
15
+ exports.SignalCliApiError = SignalCliApiError;
16
+ class SignalCliApiClient {
17
+ constructor(auth) {
18
+ // Remove trailing slash
19
+ this.baseUrl = auth.baseUrl.replace(/\/$/, '');
20
+ // Setup Basic Auth if enabled
21
+ if (auth.useBasicAuth && auth.basicAuthUsername && auth.basicAuthPassword) {
22
+ const credentials = Buffer.from(`${auth.basicAuthUsername}:${auth.basicAuthPassword}`).toString('base64');
23
+ this.basicAuthHeader = `Basic ${credentials}`;
24
+ }
25
+ }
26
+ sendRequest(request) {
27
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
28
+ try {
29
+ const headers = Object.assign({}, request.headers);
30
+ // Add Basic Auth header if configured
31
+ if (this.basicAuthHeader) {
32
+ headers['Authorization'] = this.basicAuthHeader;
33
+ }
34
+ const response = yield pieces_common_1.httpClient.sendRequest(Object.assign(Object.assign({}, request), { url: `${this.baseUrl}${request.url}`, headers }));
35
+ // Check for error response
36
+ if (response.status === 429) {
37
+ // Rate limit error
38
+ const error = response.body;
39
+ throw new SignalCliApiError(error.error || 'Rate limit exceeded', 429, error.challenge_tokens, error.account);
40
+ }
41
+ if (response.status >= 400) {
42
+ const error = response.body;
43
+ throw new SignalCliApiError(error.error || `HTTP ${response.status}`, response.status);
44
+ }
45
+ if ('error' in (response.body || {})) {
46
+ const error = response.body;
47
+ throw new SignalCliApiError(error.error || 'Unknown error occurred');
48
+ }
49
+ return response.body;
50
+ }
51
+ catch (error) {
52
+ if (error instanceof SignalCliApiError) {
53
+ throw error;
54
+ }
55
+ if (error instanceof Error) {
56
+ throw new SignalCliApiError(error.message);
57
+ }
58
+ throw new SignalCliApiError('Unknown error occurred');
59
+ }
60
+ });
61
+ }
62
+ get(url, headers) {
63
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
64
+ return this.sendRequest({
65
+ method: pieces_common_1.HttpMethod.GET,
66
+ url,
67
+ headers,
68
+ });
69
+ });
70
+ }
71
+ post(url, body, headers) {
72
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
73
+ return this.sendRequest({
74
+ method: pieces_common_1.HttpMethod.POST,
75
+ url,
76
+ body,
77
+ headers: Object.assign({ 'Content-Type': 'application/json' }, headers),
78
+ });
79
+ });
80
+ }
81
+ put(url, body, headers) {
82
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
83
+ return this.sendRequest({
84
+ method: pieces_common_1.HttpMethod.PUT,
85
+ url,
86
+ body,
87
+ headers: Object.assign({ 'Content-Type': 'application/json' }, headers),
88
+ });
89
+ });
90
+ }
91
+ delete(url, body, headers) {
92
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
93
+ return this.sendRequest({
94
+ method: pieces_common_1.HttpMethod.DELETE,
95
+ url,
96
+ body,
97
+ headers: Object.assign({ 'Content-Type': 'application/json' }, headers),
98
+ });
99
+ });
100
+ }
101
+ }
102
+ exports.SignalCliApiClient = SignalCliApiClient;
103
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/signal-cli-rest-api/src/lib/common/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const signalCliRestApiAuth: import("@activepieces/pieces-framework").CustomAuthProperty<{
2
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ useBasicAuth: import("@activepieces/pieces-framework").CheckboxProperty<false>;
4
+ basicAuthUsername: import("@activepieces/pieces-framework").ShortTextProperty<false>;
5
+ basicAuthPassword: import("@activepieces/pieces-framework").SecretTextProperty<false>;
6
+ defaultNumber: import("@activepieces/pieces-framework").ShortTextProperty<false>;
7
+ mode: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
8
+ }>;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signalCliRestApiAuth = void 0;
4
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
5
+ const markdown = `
6
+ To use the Signal CLI REST API, you need to provide the base URL of your signal-cli-rest-api instance.
7
+
8
+ 1. Make sure you have signal-cli-rest-api running (e.g., via Docker)
9
+ 2. The default URL is usually http://localhost:8080
10
+ 3. If your API is behind a reverse proxy or on a different host, adjust the URL accordingly
11
+ 4. If your API is behind a reverse proxy with HTTP Basic Auth, provide the credentials below
12
+ `;
13
+ exports.signalCliRestApiAuth = pieces_framework_1.PieceAuth.CustomAuth({
14
+ required: true,
15
+ description: markdown,
16
+ props: {
17
+ baseUrl: pieces_framework_1.Property.ShortText({
18
+ displayName: 'API Base URL',
19
+ description: 'Base URL of your signal-cli-rest-api instance (e.g., http://localhost:8080)',
20
+ required: true,
21
+ defaultValue: 'http://localhost:8080',
22
+ }),
23
+ useBasicAuth: pieces_framework_1.Property.Checkbox({
24
+ displayName: 'Use HTTP Basic Auth',
25
+ description: 'Enable if your API is behind a reverse proxy with HTTP Basic Auth',
26
+ required: false,
27
+ defaultValue: false,
28
+ }),
29
+ basicAuthUsername: pieces_framework_1.Property.ShortText({
30
+ displayName: 'Basic Auth Username',
31
+ description: 'Username for HTTP Basic Auth (required if Basic Auth is enabled)',
32
+ required: false,
33
+ }),
34
+ basicAuthPassword: pieces_framework_1.PieceAuth.SecretText({
35
+ displayName: 'Basic Auth Password',
36
+ description: 'Password for HTTP Basic Auth (required if Basic Auth is enabled)',
37
+ required: false,
38
+ }),
39
+ defaultNumber: pieces_framework_1.Property.ShortText({
40
+ displayName: 'Default Phone Number (Optional)',
41
+ description: 'Default Signal phone number for this connection (can be overridden in actions)',
42
+ required: false,
43
+ }),
44
+ mode: pieces_framework_1.Property.StaticDropdown({
45
+ displayName: 'Execution Mode',
46
+ description: 'The execution mode of your signal-cli-rest-api instance. json-rpc requires WebSocket, normal/native use HTTP GET.',
47
+ required: true,
48
+ defaultValue: 'normal',
49
+ options: {
50
+ options: [
51
+ {
52
+ label: 'Normal (HTTP GET)',
53
+ value: 'normal',
54
+ },
55
+ {
56
+ label: 'Native (HTTP GET)',
57
+ value: 'native',
58
+ },
59
+ {
60
+ label: 'JSON-RPC (WebSocket)',
61
+ value: 'json-rpc',
62
+ },
63
+ ],
64
+ },
65
+ }),
66
+ },
67
+ });
68
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/signal-cli-rest-api/src/lib/common/auth.ts"],"names":[],"mappings":";;;AAAA,qEAAqE;AAErE,MAAM,QAAQ,GAAG;;;;;;;CAOhB,CAAC;AAEW,QAAA,oBAAoB,GAAG,4BAAS,CAAC,UAAU,CAAC;IACxD,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,QAAQ;IACrB,KAAK,EAAE;QACN,OAAO,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,cAAc;YAC3B,WAAW,EAAE,6EAA6E;YAC1F,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,uBAAuB;SACrC,CAAC;QACF,YAAY,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YAC/B,WAAW,EAAE,qBAAqB;YAClC,WAAW,EAAE,mEAAmE;YAChF,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAK;SACnB,CAAC;QACF,iBAAiB,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACrC,WAAW,EAAE,qBAAqB;YAClC,WAAW,EAAE,kEAAkE;YAC/E,QAAQ,EAAE,KAAK;SACf,CAAC;QACF,iBAAiB,EAAE,4BAAS,CAAC,UAAU,CAAC;YACvC,WAAW,EAAE,qBAAqB;YAClC,WAAW,EAAE,kEAAkE;YAC/E,QAAQ,EAAE,KAAK;SACf,CAAC;QACF,aAAa,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACjC,WAAW,EAAE,iCAAiC;YAC9C,WAAW,EAAE,gFAAgF;YAC7F,QAAQ,EAAE,KAAK;SACf,CAAC;QACF,IAAI,EAAE,2BAAQ,CAAC,cAAc,CAAC;YAC7B,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EAAE,mHAAmH;YAChI,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,QAAQ;YACtB,OAAO,EAAE;gBACR,OAAO,EAAE;oBACR;wBACC,KAAK,EAAE,mBAAmB;wBAC1B,KAAK,EAAE,QAAQ;qBACf;oBACD;wBACC,KAAK,EAAE,mBAAmB;wBAC1B,KAAK,EAAE,QAAQ;qBACf;oBACD;wBACC,KAAK,EAAE,sBAAsB;wBAC7B,KAAK,EAAE,UAAU;qBACjB;iBACD;aACD;SACD,CAAC;KACF;CACD,CAAC,CAAC"}
@@ -0,0 +1,81 @@
1
+ export interface SignalMessage {
2
+ envelope: {
3
+ source: string;
4
+ sourceNumber?: string;
5
+ sourceUuid?: string;
6
+ sourceName?: string;
7
+ sourceDevice: number;
8
+ timestamp: number;
9
+ timestampISO?: string;
10
+ dataMessage?: {
11
+ message?: string;
12
+ timestamp: number;
13
+ expiresInSeconds?: number;
14
+ attachments?: Array<{
15
+ id: string;
16
+ contentType: string;
17
+ size: number;
18
+ fileName?: string;
19
+ width?: number;
20
+ height?: number;
21
+ voiceNote?: boolean;
22
+ caption?: string;
23
+ }>;
24
+ mentions?: Array<{
25
+ start: number;
26
+ length: number;
27
+ recipient: string;
28
+ }>;
29
+ groupInfo?: {
30
+ groupId: string;
31
+ type: string;
32
+ members?: string[];
33
+ name?: string;
34
+ avatarId?: number;
35
+ };
36
+ quote?: {
37
+ id: number;
38
+ author: string;
39
+ text?: string;
40
+ };
41
+ preview?: Array<{
42
+ url: string;
43
+ title: string;
44
+ description?: string;
45
+ }>;
46
+ sticker?: {
47
+ packId: string;
48
+ stickerId: number;
49
+ };
50
+ reaction?: {
51
+ emoji: string;
52
+ targetAuthor: string;
53
+ targetTimestamp: number;
54
+ };
55
+ viewOnce?: boolean;
56
+ };
57
+ syncMessage?: {
58
+ sentMessage?: {
59
+ destination: string;
60
+ timestamp: number;
61
+ message?: string;
62
+ };
63
+ };
64
+ receipt?: {
65
+ type: number;
66
+ timestamp: number;
67
+ timestamps: number[];
68
+ };
69
+ typing?: {
70
+ action: number;
71
+ timestamp: number;
72
+ };
73
+ };
74
+ account: string;
75
+ }
76
+ export declare function tryResumeApprovalFlow(message: SignalMessage, store: any, apiUrl: string): Promise<{
77
+ resumed: boolean;
78
+ action?: string;
79
+ }>;
80
+ export declare function tryWebSocketReceive(httpUrl: string, headers: Record<string, string>, timeout: number, max_messages?: number): Promise<SignalMessage[]>;
81
+ export declare function tryHttpReceive(httpUrl: string, headers: Record<string, string>): Promise<SignalMessage[]>;
@@ -0,0 +1,327 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tryResumeApprovalFlow = tryResumeApprovalFlow;
4
+ exports.tryWebSocketReceive = tryWebSocketReceive;
5
+ exports.tryHttpReceive = tryHttpReceive;
6
+ const tslib_1 = require("tslib");
7
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
8
+ const pieces_common_1 = require("@activepieces/pieces-common");
9
+ const ws_1 = tslib_1.__importDefault(require("ws"));
10
+ // Function to automatically resume approval flows
11
+ function tryResumeApprovalFlow(message, store, apiUrl) {
12
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
13
+ var _a, _b, _c, _d;
14
+ console.log('[ReceiveMessages] DEBUG - Processing message:', {
15
+ hasReaction: !!((_b = (_a = message.envelope) === null || _a === void 0 ? void 0 : _a.dataMessage) === null || _b === void 0 ? void 0 : _b.reaction),
16
+ });
17
+ // Check if it's a reaction
18
+ if (!((_d = (_c = message.envelope) === null || _c === void 0 ? void 0 : _c.dataMessage) === null || _d === void 0 ? void 0 : _d.reaction)) {
19
+ return { resumed: false };
20
+ }
21
+ console.log('[ReceiveMessages] DEBUG - Reaction detected');
22
+ const reaction = message.envelope.dataMessage.reaction;
23
+ // Convert targetTimestamp from milliseconds to seconds (Unix timestamp)
24
+ // Note: targetTimestamp in SignalMessage interface might be targetSentTimestamp in actual data
25
+ const targetTimestampMs = reaction.targetSentTimestamp || reaction.targetTimestamp;
26
+ const targetTimestamp = Math.floor(targetTimestampMs / 1000);
27
+ const targetAuthor = reaction.targetAuthor;
28
+ const reactionEmoji = reaction.emoji;
29
+ console.log('[ReceiveMessages] DEBUG - Reaction data:', {
30
+ targetSentTimestampOriginal: targetTimestampMs,
31
+ targetTimestamp,
32
+ targetAuthor,
33
+ reactionEmoji,
34
+ });
35
+ // Cleanup expired approvals
36
+ const keysListKey = 'approval:keys';
37
+ const existingKeys = (yield store.get(keysListKey, pieces_framework_1.StoreScope.PROJECT)) || [];
38
+ const currentTimestamp = Math.floor(Date.now() / 1000);
39
+ const validKeys = [];
40
+ const keysToDelete = [];
41
+ console.log('[ReceiveMessages] DEBUG - Store info:', {
42
+ existingKeysCount: existingKeys.length,
43
+ existingKeys: existingKeys,
44
+ currentTimestamp,
45
+ });
46
+ for (const key of existingKeys) {
47
+ const mapping = (yield store.get(key, pieces_framework_1.StoreScope.PROJECT));
48
+ if (mapping) {
49
+ // Check if expired
50
+ if (currentTimestamp - mapping.createdAt > mapping.timeoutSeconds) {
51
+ // Expired - delete it and flowRunId mapping
52
+ yield store.delete(key, pieces_framework_1.StoreScope.PROJECT);
53
+ const flowRunMappingKey = `approval:flowRun:${mapping.flowRunId}`;
54
+ yield store.delete(flowRunMappingKey, pieces_framework_1.StoreScope.PROJECT);
55
+ keysToDelete.push(key);
56
+ }
57
+ else {
58
+ validKeys.push(key);
59
+ }
60
+ }
61
+ else {
62
+ // Mapping not found - remove from list
63
+ keysToDelete.push(key);
64
+ }
65
+ }
66
+ // Update keys list if any were deleted
67
+ if (keysToDelete.length > 0) {
68
+ yield store.put(keysListKey, validKeys, pieces_framework_1.StoreScope.PROJECT);
69
+ }
70
+ console.log('[ReceiveMessages] DEBUG - Cleanup result:', {
71
+ keysDeleted: keysToDelete.length,
72
+ validKeysCount: validKeys.length,
73
+ });
74
+ // Look up the specific approval mapping
75
+ const storeKey = `approval:${targetTimestamp}:${targetAuthor}`;
76
+ console.log('[ReceiveMessages] DEBUG - Store lookup:', {
77
+ storeKey,
78
+ existingKeysCount: existingKeys.length,
79
+ });
80
+ const mapping = (yield store.get(storeKey, pieces_framework_1.StoreScope.PROJECT));
81
+ if (!mapping) {
82
+ // Not an approval message
83
+ console.log('[ReceiveMessages] DEBUG - No mapping found:', {
84
+ reason: 'not_an_approval_message',
85
+ searchedKey: storeKey,
86
+ });
87
+ return { resumed: false };
88
+ }
89
+ console.log('[ReceiveMessages] DEBUG - Mapping found:', {
90
+ flowRunId: mapping.flowRunId,
91
+ requestId: mapping.requestId,
92
+ approveEmoji: mapping.approveEmoji,
93
+ disapproveEmoji: mapping.disapproveEmoji,
94
+ messageTimestamp: mapping.messageTimestamp,
95
+ createdAt: mapping.createdAt,
96
+ timeoutSeconds: mapping.timeoutSeconds,
97
+ });
98
+ // Check if expired
99
+ const ageInSeconds = currentTimestamp - mapping.createdAt;
100
+ const isExpired = ageInSeconds > mapping.timeoutSeconds;
101
+ console.log('[ReceiveMessages] DEBUG - Expiration check:', {
102
+ currentTimestamp,
103
+ createdAt: mapping.createdAt,
104
+ ageInSeconds,
105
+ timeoutSeconds: mapping.timeoutSeconds,
106
+ isExpired,
107
+ });
108
+ if (isExpired) {
109
+ // Expired - delete and return
110
+ yield store.delete(storeKey, pieces_framework_1.StoreScope.PROJECT);
111
+ const flowRunMappingKey = `approval:flowRun:${mapping.flowRunId}`;
112
+ yield store.delete(flowRunMappingKey, pieces_framework_1.StoreScope.PROJECT);
113
+ const updatedKeys = validKeys.filter(key => key !== storeKey);
114
+ yield store.put(keysListKey, updatedKeys, pieces_framework_1.StoreScope.PROJECT);
115
+ console.log('[ReceiveMessages] DEBUG - Approval expired');
116
+ return { resumed: false };
117
+ }
118
+ // Check emoji and determine action
119
+ let action;
120
+ console.log('[ReceiveMessages] DEBUG - Emoji check:', {
121
+ receivedEmoji: reactionEmoji,
122
+ expectedApproveEmoji: mapping.approveEmoji,
123
+ expectedDisapproveEmoji: mapping.disapproveEmoji,
124
+ });
125
+ if (reactionEmoji === mapping.approveEmoji) {
126
+ action = 'approve';
127
+ console.log('[ReceiveMessages] DEBUG - Emoji matched: approve');
128
+ }
129
+ else if (reactionEmoji === mapping.disapproveEmoji) {
130
+ action = 'disapprove';
131
+ console.log('[ReceiveMessages] DEBUG - Emoji matched: disapprove');
132
+ }
133
+ else {
134
+ // Invalid emoji - not an approval reaction
135
+ console.log('[ReceiveMessages] DEBUG - Invalid emoji:', {
136
+ reason: 'invalid_emoji',
137
+ receivedEmoji: reactionEmoji,
138
+ });
139
+ return { resumed: false };
140
+ }
141
+ // Make HTTP request to resume the flow
142
+ const resumeUrl = `${apiUrl}v1/flow-runs/${mapping.flowRunId}/requests/${mapping.requestId}?action=${action}`;
143
+ console.log('[ReceiveMessages] DEBUG - Attempting resume:', {
144
+ resumeUrl,
145
+ apiUrl,
146
+ flowRunId: mapping.flowRunId,
147
+ requestId: mapping.requestId,
148
+ action,
149
+ });
150
+ try {
151
+ const response = yield pieces_common_1.httpClient.sendRequest({
152
+ method: pieces_common_1.HttpMethod.POST,
153
+ url: resumeUrl,
154
+ headers: {
155
+ 'Content-Type': 'application/json',
156
+ },
157
+ });
158
+ console.log('[ReceiveMessages] DEBUG - Resume successful:', {
159
+ flowRunId: mapping.flowRunId,
160
+ action,
161
+ responseStatus: response.status,
162
+ responseBody: response.body,
163
+ });
164
+ // Delete mapping from Store (cleanup)
165
+ yield store.delete(storeKey, pieces_framework_1.StoreScope.PROJECT);
166
+ // Delete flowRunId mapping
167
+ const flowRunMappingKey = `approval:flowRun:${mapping.flowRunId}`;
168
+ yield store.delete(flowRunMappingKey, pieces_framework_1.StoreScope.PROJECT);
169
+ // Remove key from approval keys list
170
+ const finalKeys = validKeys.filter(key => key !== storeKey);
171
+ yield store.put(keysListKey, finalKeys, pieces_framework_1.StoreScope.PROJECT);
172
+ console.log('[ReceiveMessages] DEBUG - Cleanup completed');
173
+ return { resumed: true, action };
174
+ }
175
+ catch (error) {
176
+ // If resume fails, log but don't throw - message will still be returned
177
+ console.error('[ReceiveMessages] DEBUG - Resume failed:', {
178
+ error: error instanceof Error ? error.message : String(error),
179
+ errorStack: error instanceof Error ? error.stack : undefined,
180
+ resumeUrl,
181
+ flowRunId: mapping.flowRunId,
182
+ reason: 'resume_failed',
183
+ });
184
+ return { resumed: false };
185
+ }
186
+ });
187
+ }
188
+ // WebSocket receive function (for json-rpc mode)
189
+ function tryWebSocketReceive(httpUrl, headers, timeout, max_messages) {
190
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
191
+ const wsUrl = httpUrl.replace(/^http:/, 'ws:').replace(/^https:/, 'wss:');
192
+ const wsHeaders = Object.assign(Object.assign({}, headers), { 'Connection': 'Upgrade', 'Upgrade': 'websocket' });
193
+ return new Promise((resolve, reject) => {
194
+ const messages = [];
195
+ let messageCount = 0;
196
+ const maxMessagesToCollect = max_messages || Infinity;
197
+ const timeoutMs = timeout * 1000;
198
+ let resolved = false;
199
+ const resolveOnce = (result) => {
200
+ if (!resolved) {
201
+ resolved = true;
202
+ resolve(result);
203
+ }
204
+ };
205
+ const rejectOnce = (error) => {
206
+ if (!resolved) {
207
+ resolved = true;
208
+ reject(error);
209
+ }
210
+ };
211
+ const processMessages = () => {
212
+ // Filter messages that have dataMessage (actual message content)
213
+ return messages.filter((msg) => { var _a; return (_a = msg.envelope) === null || _a === void 0 ? void 0 : _a.dataMessage; });
214
+ };
215
+ const ws = new ws_1.default(wsUrl, {
216
+ headers: wsHeaders,
217
+ });
218
+ const timeoutId = setTimeout(() => {
219
+ if (!resolved) {
220
+ ws.close();
221
+ resolveOnce(processMessages());
222
+ }
223
+ }, timeoutMs);
224
+ ws.on('open', () => {
225
+ // WebSocket connection opened successfully
226
+ // The server will send messages as they arrive
227
+ });
228
+ ws.on('message', (data) => {
229
+ try {
230
+ const messageText = data.toString();
231
+ // Check if it's an error message
232
+ if (messageText.includes('"error"') || messageText.includes('"Msg"')) {
233
+ try {
234
+ const errorObj = JSON.parse(messageText);
235
+ if (errorObj.error || errorObj.Msg) {
236
+ clearTimeout(timeoutId);
237
+ ws.close();
238
+ // If it's a "no messages" type error, return empty array
239
+ if (errorObj.Msg && errorObj.Msg.includes('No new messages')) {
240
+ resolveOnce([]);
241
+ }
242
+ else {
243
+ rejectOnce(new Error(errorObj.error || errorObj.Msg));
244
+ }
245
+ return;
246
+ }
247
+ }
248
+ catch (_a) {
249
+ // Not a JSON error, continue processing
250
+ }
251
+ }
252
+ // Try to parse as JSON message
253
+ try {
254
+ const message = JSON.parse(messageText);
255
+ messages.push(message);
256
+ messageCount++;
257
+ // If we've reached max_messages, close the connection
258
+ if (messageCount >= maxMessagesToCollect) {
259
+ clearTimeout(timeoutId);
260
+ ws.close();
261
+ resolveOnce(processMessages());
262
+ }
263
+ }
264
+ catch (parseError) {
265
+ // If parsing fails, ignore this message
266
+ // The server might send non-JSON data
267
+ }
268
+ }
269
+ catch (error) {
270
+ // Ignore individual message errors
271
+ }
272
+ });
273
+ ws.on('error', (error) => {
274
+ clearTimeout(timeoutId);
275
+ ws.close();
276
+ // Reject to trigger fallback to HTTP GET
277
+ rejectOnce(error);
278
+ });
279
+ ws.on('close', () => {
280
+ clearTimeout(timeoutId);
281
+ // If we haven't resolved yet, resolve with collected messages
282
+ if (!resolved) {
283
+ resolveOnce(processMessages());
284
+ }
285
+ });
286
+ });
287
+ });
288
+ }
289
+ // HTTP GET receive function (for normal/native mode)
290
+ function tryHttpReceive(httpUrl, headers) {
291
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
292
+ try {
293
+ const response = yield pieces_common_1.httpClient.sendRequest({
294
+ method: pieces_common_1.HttpMethod.GET,
295
+ url: httpUrl,
296
+ headers,
297
+ });
298
+ // The API returns either a JSON array of messages or a JSON string
299
+ let messages = [];
300
+ if (typeof response.body === 'string') {
301
+ try {
302
+ messages = JSON.parse(response.body);
303
+ }
304
+ catch (_a) {
305
+ // If parsing fails, try to parse as array
306
+ messages = [];
307
+ }
308
+ }
309
+ else if (Array.isArray(response.body)) {
310
+ messages = response.body;
311
+ }
312
+ else {
313
+ messages = [];
314
+ }
315
+ // Filter messages that have dataMessage (actual message content)
316
+ return messages.filter((msg) => { var _a; return (_a = msg.envelope) === null || _a === void 0 ? void 0 : _a.dataMessage; });
317
+ }
318
+ catch (error) {
319
+ // If no messages are available, return empty array
320
+ if (error instanceof Error && error.message.includes('No new messages')) {
321
+ return [];
322
+ }
323
+ throw error;
324
+ }
325
+ });
326
+ }
327
+ //# sourceMappingURL=message-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-utils.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/signal-cli-rest-api/src/lib/common/message-utils.ts"],"names":[],"mappings":"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"}