@peopl-health/nexus 3.8.22 → 3.8.23
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.
|
@@ -3,7 +3,6 @@ const { v4: uuidv4 } = require('uuid');
|
|
|
3
3
|
const twilio = require('twilio');
|
|
4
4
|
|
|
5
5
|
const runtimeConfig = require('../config/runtimeConfig');
|
|
6
|
-
const { Symptoms_ID } = require('../config/airtableConfig');
|
|
7
6
|
const { generatePresignedUrl } = require('../config/awsConfig');
|
|
8
7
|
|
|
9
8
|
const { sanitizeMediaFilename } = require('../utils/sanitizerUtils');
|
|
@@ -18,8 +17,6 @@ const { uploadMediaToS3, getFileExtension } = require('../helpers/mediaHelper');
|
|
|
18
17
|
|
|
19
18
|
const { MessageProvider } = require('../adapters/MessageProvider');
|
|
20
19
|
|
|
21
|
-
const { updateRecordByFilter } = require('../services/airtableService');
|
|
22
|
-
|
|
23
20
|
class TwilioProvider extends MessageProvider {
|
|
24
21
|
constructor(config) {
|
|
25
22
|
super(config);
|
|
@@ -233,11 +230,6 @@ class TwilioProvider extends MessageProvider {
|
|
|
233
230
|
}
|
|
234
231
|
}
|
|
235
232
|
);
|
|
236
|
-
|
|
237
|
-
if (scheduledMessage.contentSid) {
|
|
238
|
-
updateRecordByFilter(Symptoms_ID, 'weekly_questionnaires', `{sid}="${scheduledMessage.contentSid}"`, { send_status: status })
|
|
239
|
-
.catch(err => logger.warn('[TwilioProvider] Failed to update weekly_questionnaires send_status', err?.message));
|
|
240
|
-
}
|
|
241
233
|
} catch (err) {
|
|
242
234
|
logger.warn('[TwilioProvider] Failed to update scheduled message status', err?.message);
|
|
243
235
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
const moment = require('moment-timezone');
|
|
2
2
|
|
|
3
3
|
const runtimeConfig = require('../config/runtimeConfig');
|
|
4
|
-
const { Symptoms_ID } = require('../config/airtableConfig');
|
|
5
4
|
|
|
6
5
|
const { logger } = require('../utils/logger');
|
|
7
6
|
|
|
@@ -12,7 +11,7 @@ const FlowRouting = require('../models/flowRoutingModel.js');
|
|
|
12
11
|
const { ensureWhatsAppFormat } = require('../helpers/twilioHelper');
|
|
13
12
|
const { ensureFlowTokenInVariables } = require('../helpers/templateFlowControllerHelper');
|
|
14
13
|
|
|
15
|
-
const { getRecordByFilter: defaultGetRecordByFilter
|
|
14
|
+
const { getRecordByFilter: defaultGetRecordByFilter } = require('../services/airtableService');
|
|
16
15
|
|
|
17
16
|
const {
|
|
18
17
|
sendMessage: defaultSendMessage,
|
|
@@ -23,7 +22,6 @@ const {
|
|
|
23
22
|
const dependencies = {
|
|
24
23
|
ScheduledMessage: DefaultScheduledMessage,
|
|
25
24
|
getRecordByFilter: defaultGetRecordByFilter,
|
|
26
|
-
updateRecordByFilter: defaultUpdateRecordByFilter,
|
|
27
25
|
sendScheduledMessage: defaultSendScheduledMessage,
|
|
28
26
|
sendMessage: defaultSendMessage
|
|
29
27
|
};
|
|
@@ -62,11 +60,6 @@ const _pickMessageId = (result, fallback) =>
|
|
|
62
60
|
const _sendAndPersist = async (payload) => {
|
|
63
61
|
const saved = await dependencies.ScheduledMessage.create(payload);
|
|
64
62
|
|
|
65
|
-
if (saved.contentSid) {
|
|
66
|
-
dependencies.updateRecordByFilter(Symptoms_ID, 'weekly_questionnaires', `{sid}="${saved.contentSid}"`, { send_status: 'pending' })
|
|
67
|
-
.catch(err => logger.error('[messageController] Failed to update weekly_questionnaires send_status', { contentSid: saved.contentSid, error: err.message }));
|
|
68
|
-
}
|
|
69
|
-
|
|
70
63
|
const result = dependencies.sendScheduledMessage
|
|
71
64
|
? await dependencies.sendScheduledMessage(saved)
|
|
72
65
|
: await dependencies.sendMessage({ ...payload, body: payload.message });
|
|
@@ -36,28 +36,6 @@ async function fetchBasePrompt(promptId) {
|
|
|
36
36
|
return record;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
async function fetchSnippets(promptId) {
|
|
40
|
-
const cacheKey = `snippets:${promptId}`;
|
|
41
|
-
const cached = snippetCache.get(cacheKey);
|
|
42
|
-
if (cached) return cached;
|
|
43
|
-
|
|
44
|
-
try {
|
|
45
|
-
const records = await getRecordByFilter(
|
|
46
|
-
Config_ID,
|
|
47
|
-
'context_snippets',
|
|
48
|
-
`FIND("${promptId}", ARRAYJOIN({prompts}))`,
|
|
49
|
-
);
|
|
50
|
-
const snippets = records || [];
|
|
51
|
-
snippetCache.set(cacheKey, snippets);
|
|
52
|
-
return snippets;
|
|
53
|
-
} catch (error) {
|
|
54
|
-
logger.error('[promptComposer] Failed to fetch snippets', {
|
|
55
|
-
promptId, error: error.message,
|
|
56
|
-
});
|
|
57
|
-
return [];
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
39
|
function sortSnippets(snippets) {
|
|
62
40
|
return [...snippets].sort((a, b) => {
|
|
63
41
|
const aIndex = SNIPPET_TYPE_ORDER.indexOf(a.type || '');
|
|
@@ -135,7 +113,7 @@ async function composePrompt({ presetId = null, promptId = null, variables = nul
|
|
|
135
113
|
|
|
136
114
|
const snippets = presetSnippetIds
|
|
137
115
|
? await fetchSnippetsByRecordIds(presetSnippetIds)
|
|
138
|
-
:
|
|
116
|
+
: [];
|
|
139
117
|
|
|
140
118
|
const activeSnippets = status
|
|
141
119
|
? snippets.filter(s => !s.status || s.status === status)
|
|
@@ -162,28 +140,6 @@ async function composePrompt({ presetId = null, promptId = null, variables = nul
|
|
|
162
140
|
return { resolvedPrompt, snippetIds, promptId: resolvedPromptId, presetToolIds };
|
|
163
141
|
}
|
|
164
142
|
|
|
165
|
-
async function fetchToolMapping(promptId) {
|
|
166
|
-
const cacheKey = `tools:${promptId}`;
|
|
167
|
-
const cached = toolCache.get(cacheKey);
|
|
168
|
-
if (cached) return cached;
|
|
169
|
-
|
|
170
|
-
try {
|
|
171
|
-
const records = await getRecordByFilter(
|
|
172
|
-
Config_ID,
|
|
173
|
-
'tools',
|
|
174
|
-
`FIND("${promptId}", ARRAYJOIN({prompts}))`,
|
|
175
|
-
);
|
|
176
|
-
const tools = records || [];
|
|
177
|
-
toolCache.set(cacheKey, tools);
|
|
178
|
-
return tools;
|
|
179
|
-
} catch (error) {
|
|
180
|
-
logger.warn('[promptComposer] Failed to fetch tool mapping, returning empty list', {
|
|
181
|
-
promptId, error: error.message,
|
|
182
|
-
});
|
|
183
|
-
return [];
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
|
|
187
143
|
async function fetchToolsByRecordIds(recordIds) {
|
|
188
144
|
if (!recordIds?.length) return [];
|
|
189
145
|
|
|
@@ -209,9 +165,9 @@ async function resolveTools({ promptId, assistant, presetToolIds = null, status
|
|
|
209
165
|
|
|
210
166
|
if (!hasRegistryTools && !hasAssistantTools) return { toolIds: [], filtered: false };
|
|
211
167
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
168
|
+
if (!presetToolIds) return { toolIds: [], filtered: false };
|
|
169
|
+
|
|
170
|
+
const mappedTools = await fetchToolsByRecordIds(presetToolIds);
|
|
215
171
|
if (!mappedTools.length) return { toolIds: [], filtered: false };
|
|
216
172
|
|
|
217
173
|
const activeTools = status
|